gpt4 book ai didi

node.js - Mongoose 保存方法不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 01:53:26 25 4
gpt4 key购买 nike

我正在创建一个具有消息传递功能的社交媒体应用程序,我的问题是存储已保存的消息,我在其中查找发件人的 ID,然后使用 .save() 存储消息。

文档的更新版本可以从回调中正常记录,但由于某种原因它没有保存在数据库中:/

任何帮助将不胜感激

var MessageSchema = new Schema({
client_id: Number,
messages: [{ client_id: Number, messages: [] }]

//嵌套消息应该看起来像 [{type: "sent", message:"some message"}, .....] });

    socket.on("send_message", (data, friend_id, me_id) => {
Message.findOne({ client_id: me_id }, (err, doc) => {
doc.messages.map(
i =>
i.client_id == friend_id
? i.messages.push({ type: "sent", message: data })
: null
);
doc.save(function(err, updated) {
if (err) {
console.error("ERROR!");
}
});
});
});

最佳答案

您需要首先显式定义嵌​​套消息数组架构:

var MessageSchema = new Schema({
client_id: Number,
messages: [{
client_id: Number,
messages: [{
type: { type: String },
data: String
}]
}]
})

保存数据需要使用findOneAndUpdate() 方法如下:

Message.findOneAndUpdate(
{ 'client_id': me_id, 'messages.client_id': friend_id },
{ '$push': {'messages.$.messages': { 'type': 'sent', 'message': data } },
{ 'new': true }
(err, message) => {
if (err) {
console.error("ERROR!");
} else {
console.log(message);
}
});
});

关于node.js - Mongoose 保存方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48846849/

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