【发布时间】:2016-06-26 20:39:07
【问题描述】:
我对这个承诺概念很陌生。我不确定,但看看这个,我相信我只是将 promise 用作回调,而我将在 promise 地狱中结束!
我有这个函数,它假设从 MongoUser 数据库中获取用户对象,更新它并再次保存它。这是我的代码 sn-p:
var changePassword = function(data){
return new Promise(function(fulfill, reject){
MongoUser.findOne({username: data.username}).exec()
.then(function(mongoUser){
//mongoUser = new MongoUser();
//mongoUser.username = data.username;
mongoUser.password = data.password;
mongoUser.save().then(function(){
fulfill(data);
}).catch(function(error){
log.error("MongoDB Failed in updating data", {"error": error});
reject(error);
});
})
.catch(function(error){
log.error("MongoDB Failed in updating data", {"error": error});
reject(error);
});
});
};
知道如何在不创建新承诺的情况下使用 Mongoose 返回的承诺吗?
【问题讨论】:
-
您返回的数据与作为参数传递的数据相同吗?是故意的吗?
-
认为
fulfull(data)与return data相同,而reject(error)只是throw error,因此之后您可以摆脱包装承诺。 -
不需要添加额外的 Promise ,Mongoos 也返回一个 Promise
标签: javascript node.js mongodb mongoose mongoose-schema