如何处理猫鼬的承诺?

时间:2016-12-16 16:29:33

标签: javascript node.js mongodb mongoose

我是mongoose的新手我只是想了解一旦我们从客户端获得数据如何使用带有mongoose模式的nodejs来保存和处理承诺。在下面的示例中,如果发生任何错误,尝试将数据保存到集合句柄。

model.js

var mongoose = require('bluebird').promisifyAll(require('mongoose'));

var UserAccessSchema = new mongoose.Schema({
  firstname: String,
  lastname: String,
  uid: String,
  email: String,
});

export default mongoose.model('UserAccess', UserAccessSchema);

controller.js

var UserAccess = require('./access.model');

export function create(req, res) {
  console.log(req.body);
  UserAccess.createAsync(req.body)
    .then()
    .catch();

}

index.js

var express = require('express');
var controller = require('./access.controller');
var router = express.Router();

router.post('/', controller.create);

module.exports = router;

1 个答案:

答案 0 :(得分:1)

你必须Promise.promisify所有你想要访问异步对象的对象。

如:

var Promise = require('bluebird')
var mongoose = require('mongoose');

var UserAccessSchema = new mongoose.Schema({
  firstname: String,
  lastname: String,
  uid: String,
  email: String,
});

var model = mongoose.model('UserAccess', UserAccessSchema);

model = Promise.promisifyAll(model)

export default model;

这样,您将使用创建的相应async方法获得模型。

但是,为了清楚起见,你不需要蓝鸟与蓝鸟一起使用Promise。

您实际上只需在查询.exec()之后附加方法即可返回Promise。

您可以参考文档中的section