gpt4 book ai didi

javascript - Express JS - 无法将数组推送到 MongoDB 中的表

转载 作者:行者123 更新时间:2023-11-30 20:36:41 25 4
gpt4 key购买 nike

我的 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 引用的“消息”表中,并尝试通过将消息插入列中来在用户表中创建相应的条目将消息作为数组接受的类型。

在运行应用程序时,在我的控制台中我可以看到附加到用户集合的消息对象,如下所示:

enter image description here

但是当我检查我的数据库以查看消息是否已附加时,它显示消息数组为空:

enter image description here

不确定将数组附加到集合时哪里出错了。

最佳答案

做一个小改动:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com