PhoneGap中文网

 找回密码
 立即注册

mongoose 与 koa 如何比较好的结合

mongoose 与 koa 如何比较好的结合 请大牛帮忙,万分感谢


###没发现类似co-mongoose的项目,为每一个操作进行thunkify,感觉很麻烦

请问有没有mongoose与koa 结合的示范代码


回复:mongoose 与 koa 如何比较好的结合
  • var mongoose = require('mongoose'),
      Schema = mongoose.Schema,
      Promise = mongoose.Promise;
    
    var UserSchema = new Schema({
      name: {
        type: String,
        required: true
      }
    });
    UserSchema.methods.add = function() {
      var self = this,
        p = new Promise();
    
      self.save(function(error, data) {
        if (error) {
          p.reject(error);
        } else {
          p.resolve(null, data);
        }
      });
      return p;
    };
    
    mongoose.model('User', UserSchema);
    
    /*
     * POST
     * create user
     */
    var parse = require('co-body'),
      mongoose = require('mongoose'),
      User = mongoose.model('User');
    
    app.post('/users', function * () {
      var body = yield parse(this),
        user = new User(body);
      yield user.add();
    
      this.body = {
        message: 'success',
        id: user.id
      };
    });
    

    就是弄成promise,如果查询,直接exec()就行。

    var user = yield User.findById(id).exec();
    
  • 感谢@coderhaoxin 的回复

    同时也找到另外一种方法

    undoZen/yieldwiki

  • 因为koa支持yield一个promise,所以可以考虑用mongoose-q

  • promise 或者 thunkify-wrap 试试?

  • 我试试

  • mongoose-q 是比较好的选择

  • 如今发布问题已经八个月过去了,现在有没有新的解决方法?

  • @sjfkai https://cnodejs.org/topic/532911255552a20d4102c768

  • 原先用express或者其他框架的代码不需要改动,只要多封装一层处理逻辑就好。例: //model.js var Post = require(‘…/…/db/models/post’);

    module.exports = {

    fetch: function * () {
        var fetch = thunkify(Post.fetch, Post);
        var postList = yield fetch();
        return postList;
    }
    

    }

  • 大部分的功能在后面加个.exec()即可,mongoose是支持promise的 例如:

    var user=yield userModel.findByIdAndUpdate(userBody._id, userBody).exec();
    
  • 那天看到一个支持yield的mongoose库,忘了记下来,现在找不到了。

  • @coolicer http://mongorito.com/

  • 好久没有整了 不过还是谢谢了mongoose 与 koa 如何比较好的结合 很不错

Archiver|手机版|小黑屋| PhoneGap中文网 ( 京ICP备13027796号-1 )

GMT+8, 2024-5-17 20:56 , Processed in 0.057167 second(s), 11 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

返回顶部