pru*_*ule 5 javascript mongoose mongodb node.js promise
我正在寻找有关如何使用mongodb/mongoose.
我目前尝试过:
userSchema.statics.findByFacebookIdOrCreate = function(facebookId, name, email) {
var self = this;
return this.findOne({
facebookId: facebookId
}).exec().then(function(user) {
if (!user) {
return self.model.create({
facebookId: facebookId,
name: name,
email: email
}).exec().then(function(user) {
return user;
});
}
return user;
});
};
Run Code Online (Sandbox Code Playgroud)
我从我的(节点/快递)API 端点调用它:
User.model.findByFacebookIdOrCreate(fbRes.id, fbRes.name, fbRes.email)
.then(function(user) {
return res.sendStatus(200).send(createTokenForUser(user));
}, function(err) {
return res.sendStatus(500).send({
error: err
});
});
Run Code Online (Sandbox Code Playgroud)
问题是:
谁能看到我做错了什么,以及我怎样才能做得更好?
谢谢。
更新
问题的原因是
self.model.create(...)
Run Code Online (Sandbox Code Playgroud)
应该是(没有模型参考)
self.create(...)
Run Code Online (Sandbox Code Playgroud)
但是,我现在需要知道我在错误处理方面做错了什么 - 我可以看到错误正在发生,但我看不到原因。
我仍然有一些错误发生,我知道这是因为我的状态为 500
return res.sendStatus(500).send({ error: err });
Run Code Online (Sandbox Code Playgroud)
但实际的错误消息/详细信息为空。
问题可能是:
这将始终返回一个承诺,它允许您在方法之后使用then()(您必须添加mpromise模块):
userSchema.statics.findByFacebookIdOrCreate = function (facebookId, name, email) {
var self = this;
var Promise = require('mpromise');
var promise = new Promise;
this.findOne({facebookId: facebookId }).exec()
.then(function (user) {
if(user) {
promise.fulfill(user);
return;
}
self.model.create({ facebookId: facebookId, name: name, email: email })
.then(function (user) {
promise.fulfill(user);
return;
});
});
return promise;
};
Run Code Online (Sandbox Code Playgroud)
希望这对您有帮助
| 归档时间: |
|
| 查看次数: |
2619 次 |
| 最近记录: |