我在尝试 promise Mongoose 方法时遇到了阻碍。 据我的理解,我应该能够 promise fn 接受带有错误和参数的回调,但在这种情况下我收到此错误:
TypeError: this.Query is not a constructor
型号代码:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
module.exports = mongoose.model('User', new Schema({
name: String,
password: String,
admin: Boolean
}));
破解代码:
var User = require('./app/models/user');
var { promisify } = require('util');
var findUserPromise = promisify(User.findOne);
...
findUserPromise({ name: req.body.name })
.then(user => console.log("do something with the user"))
.catch(err => { console.log("err ", err) });
非常感谢任何帮助!
最佳答案
mongoose 已经非常 promise 友好了。要从 findOne()
获得 promise ,您只需调用 .exec()
:
而不是
var findUserPromise = promisify(User.findOne);
...
findUserPromise({ name: req.body.name })
.then(user =>
...
只需使用.exec()调用即可
:
User.findOne({ name: req.body.name }).exec()
.then(user =>
...
关于Node.js util Promisify Mongoose 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53552236/