我目前正在做一个项目,并且我坚持将一个项插入到数据库的数组/对象中。我想要做的是将一个“被提升的”帖子的id添加到“User”集合中的一个数组/列表中,但是,我似乎不能让它工作。
我的模式代码如下:
// this is a child scheme/sub-document
var uvpSchema = new Schema();
uvpSchema.add({
post: String
});
var dvpSchema = new Schema();
dvpSchema.add({
post: String
});
//main schema
var userSchema = new Schema({
firstname: { type: String, required: true },
lastname: { type: String, required: true },
username: { type: String, required: true, unique: true },
password: { type: String, required: true },
upVotedPosts: [uvpSchema],
downVotedPosts: [dvpSchema],
created_at: Date,
});下面是我的'routes.js‘中的代码,用于将帖子的id插入数组中:
var newPush = {
post: postID // postID is a variable that I have already defined
};
User.findOneAndUpdate({username: req.session.user}, {$push: {upVotedPosts: newPush}}, {upsert: true, save: true}, (err, user) => {
if (err) console.log(err);
user.upVotedPosts.push(newPush);
User.save;
res.redirect(req.get('referer'));
console.log(user.upVotedPosts);
});我在终端中收到的错误是:
{ _id: 595f68b5fadd49105813f8a4 },{ _id: 595f693d3c2c21189004b0a7 },{ _id: 595f70a2df80e0252894551b }
events.js:163
throw er; // Unhandled 'error' event
^提前感谢;-)
发布于 2017-07-07 19:54:40
Route.js
User.findOneAndUpdate({username: req.session.user}, {$push: {upVotedPosts: newPush}}, {upsert: true, save: true}, (err, user) => {
if (err) console.log(err);
user.upVotedPosts.push(newPush);
User.save;
res.redirect(req.get('referer'));
console.log(user.upVotedPosts);
});您不需要显式推送,因为您使用findOneandUpdate - $push进行推送
参考here
其次,its
user.save() 而不是
User.save发布于 2017-07-08 18:34:18
首先,我要感谢大家的帮助;-)
我终于设法让它部分工作了!我的问题是我的函数异步运行,导致了一些问题。我通过向每个mongoose函数添加回调函数解决了这个问题。
但是,仍然返回相同的错误,导致服务器崩溃。其他一切正常;新的项被添加到数组中。
有没有什么办法可以忽略这个错误,这样服务器就不会崩溃?
https://stackoverflow.com/questions/44969646
复制相似问题