我的 MongoDB 数据库中有两个表。
1) 用户 2) 留言
在我的应用程序中,当用户创建“消息”时,我试图将 messages
作为数组插入到 User
表中。
为User和Messages定义的Schemas如下所示
消息方案
var schema = new Schema({
content: {type: String, required: true},
user: {type: Schema.Types.ObjectId, ref: 'User'}
});
用户架构
var schema = new Schema({
firstName: {type: String, required: true},
lastName: {type: String, required: true},
password: {type: String, required: true},
email: {type: String, required: true, unique: true},
messages: [{type: Schema.Types.ObjectId, ref: 'Message'}]
});
我定义了一个 post 方法,如下所示:
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 occurred',
error: err
});
}
var message = new Message({
content: req.body.content,
user: user._id
});
console.log("Message:"+ message);
message.save(function (err, result) {
if (err) {
return res.status(500).json({
title: 'An error occurred',
error: err
});
}
user.messages.push(result);
user.save();
console.log('Saved...'+user);
res.status(201).json({
message: 'Saved message',
obj: result
});
});
});
});
在这里,我首先检查用户是否存在,然后将发送的消息插入带有 userid
引用的“消息”表中,并尝试通过将消息插入列中来在用户表中创建相应的条目将消息作为数组接受的类型。
在运行应用程序时,在我的控制台中我可以看到附加到用户集合的消息对象,如下所示:
但是当我检查我的数据库以查看消息是否已附加时,它显示消息数组为空:
不确定将数组附加到集合时哪里出错了。
最佳答案
做一个小改动:
message.save(function (err, result) {
// ... your other code
user.messages.push(result.id || result._id); // CHANGE THIS LINE
user.save();
console.log('Saved...'+user);
res.status(201).json({
message: 'Saved message',
obj: result
});
});
关于javascript - Express JS - 无法将数组推送到 MongoDB 中的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49763130/