Chained Promise with Express:在最后一步中未收到任何数据
Chained Promises With Express: No data received in final step
我正在使用Mongoose的findOneAndUpdate方法来处理我的restful API的放置请求。我将密码留到第二步以使用 Mongoose 的"保存"预钩,并且我在预钩子中对密码进行哈希处理。
router.put("/:id", function(req, res, next){
var password = req.body["password"];
delete req.body["password"];
var p = new Promise(function (resolve, reject){
User.findOneAndUpdate({_id:req.params.id}, req.body, { 'new': true } ,function (err, user) {
if (err) {
reject(err);
}
else {
resolve(user);
}
});
});
p.then(function(user){
if(!password) {
return user;
}
user.password = password;
user.save(function(err) {
if (err) {
return(err);
}
else {
console.log(user); // The object is updated and here, but in postman I have "No Data Received"
return(user);
}
});
}).then(function(result){
return res.json(result);
}).catch(function(err){
next(err);
});
});
在上面的评论中,我在该块中有用户对象。但是在邮递员中,我有"未收到数据"。有什么想法吗?
更好的是,使用mongoose
预保存钩子。
UserSchema.pre('save', true, function beforeSave (next, done) {
let user = this;
if (this.isModified('password')) {
bcrypt.genSalt(10, function genSalt (err, salt) {
if (err) {
return done(err);
}
bcrypt.hash(user.password, salt, function hash (err, hash) {
if (err) {
return done(err);
}
user.password = hash;
done();
});
});
} else {
done();
}
next();
});
这将允许您保存用户,如果密码未被修改,则不会更新它。
router.put('/:id', function (req, res, next) {
User.findById(req.params.id).exec(function (err, user) {
user.set(req.body);
user.save(function (err) {
if (err) {
return next(err);
}
return res.json(user);
});
});
相关文章:
- 在javascript中调用函数/对象引用时,可容纳任何数据类型
- php函数的XMLHttpRequest响应不包含任何数据
- Javascript-Ajax 无法发送任何数据
- 为什么复选框在未选中时不提交任何数据
- 如果发现任何数据,如何停止每7秒运行一次的函数
- onClick()函数没有'不要发布任何数据
- ajax调用成功,但未返回任何数据
- 带有大型JSON的简单ngTable在单元格中不显示任何数据
- 动态输入文件中未加载任何数据
- 输入类型“文本”的 ng-init 不会在文本框内显示任何数据
- AngularJS “ng-repeat |滤波器:..“没有像我预期的那样工作(不显示任何数据)
- 发送 XHR 请求而不接收任何数据
- $.getJSON 没有进入函数,也没有获取任何数据
- Chained Promise with Express:在最后一步中未收到任何数据
- 蓝鸟承诺不会收到任何数据
- jQuery $.ajax 成功,但 serv 没有接收任何数据
- 我没有从getJSON函数获得任何数据
- 套接字 - 客户端站点上不显示任何数据
- XMLHttpRequest 不接收任何数据或只是“未定义”
- 在按 TAB 键时,文本字段中没有任何数据,它应该显示所需的字段验证 ASP.NET