【发布时间】:2018-06-20 10:32:42
【问题描述】:
我正在向创建新消息的 API 发出 POST 请求,一旦创建,在 Promise 回调中,我也将消息保存在用户集合中。
看到这一行 - user.messages.push(result); //这里有问题
router.post('/', function (req, res, next) {
var decoded = jwt.decode(req.query.token);
User.findById(decoded.user._id, function(err, user){
if(err){
return res.status(500).json({
title: 'An error occured',
error: err
});
}
var message = new Message({
content : req.body.content,
user : user //add the user to messages as a link
});
message.save(function(err, result) {
if(err){
return res.status(500).json({
title: 'An error occured',
error: err
});
}
user.messages.push(result); //problem here
user.save();
res.status(201).json({
message: 'Saved message',
obj: result
});
});
});
});
消息是在消息集合中创建的,但一旦到达突出显示的行,服务器就会陷入无限循环并停止。
这是服务器显示的错误:
【问题讨论】:
-
我认为这与推送无关。你是在别处调用递归函数吗
-
不,我没有在任何地方使用显式递归。
-
好吧,试着编写一个最小的代码来调用 API 并逐步添加函数,直到你遇到问题。因为这段代码中没有任何东西会导致你的错误。
-
找到解决方案。
-
在这部分代码中吗?
标签: node.js mongodb express mongoose mean-stack