我遇到了一個問題,我可以在其中創建與多人 2 等的對話。但是,我不明白為什么它不存盤資料以分離用戶模型。
這是您只需要知道的代碼:
router.post(
"/",
auth,
[
check("conversators", "There should be at least two conversators").isLength(
{ min: 2 }
),
],
async (req, res) => {
const { conversators } = req.body;
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(400).json({ errors: errors.array() });
}
try {
let conversation = new Conversation({
user: req.user.id,
conversators: conversators,
});
await conversators.map(async (conversator) => {
let user = await User.findById(conversator);
let newData = user;
newData.conversations.push(conversation.id);
console.log('Created data', newData);
let newUser = await User.findOneAndUpdate(
{ user: conversator },
{
$set: {
newData,
},
},
{ new: true }
);
await newUser.save();
console.log(newUser);
});
await conversation.save();
res.status(200).json(conversation);
} catch (error) {
console.error(error.message);
res.status(500).send("Server error.");
}
}
);
module.exports = router;
我可以保證的是這一行:console.log('Created data', newData);列印所需的資料。但是,下一個控制臺:console.log(newUser);列印與前一個相同的 User 模型。
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const UserSchema = new Schema({
name: {
type: String,
required: true,
},
surname: {
type: String,
required: true,
},
email: {
type: String,
required: true,
},
password: {
type: String,
required: true,
},
conversations: [
{
type: mongoose.Schema.Types.ObjectId,
ref: "conversation",
},
],
date: {
type: Date,
default: Date.now,
},
});
module.exports = User = mongoose.model("user", UserSchema);
uj5u.com熱心網友回復:
原因可能是用于獲取newData和記錄的搜索方法不同newUser。您已經使用了User.findByIdfor newData,它顯然會為不同的 id 回傳不同的物件。但是User.findOneAndUpdate使用可能滿足多個結果的過濾條件,但只會回傳第一個。所以它大膽地取決于那個user領域是什么。
uj5u.com熱心網友回復:
這是我更改并開始查看MongoDB上的資料的部分:
await conversators.map(async (conversator) => {
let user = await User.findById(conversator);
let newData = user;
newData.conversations.push(conversation.id);
new Promise(async (resolve, reject) => {
user = await User.findOneAndUpdate(
{ id: conversator },
{
$set: {
newData,
},
},
{ new: true }
);
return resolve;
})
return await user.save();
});
代表提問者發布
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/328772.html
標籤:javascript MongoDB 表达 猫鼬模式
