gpt4 book ai didi

javascript - Mongoose + Mongodb User.update 不起作用

转载 作者:行者123 更新时间:2023-12-01 01:32:23 25 4
gpt4 key购买 nike

我想做的是创建一个新集合,并将该集合推送到特定的 User.collections 数组中。我读过很多 stackoverflow 帖子,他们都说使用 User.update() 或 User.findOneAndUpdate()。我两者都没有运气。我可以创建一个集合并将其保存到 mongo,这样我就知道我确实正在访问数据库。这是我的代码,如果有人可以帮助我,我将不胜感激。

用户架构

const mongoose = require('mongoose');
const { Schema } = mongoose;

const userSchema = new Schema({

googleID: String,
givenName: String,
familyName: String,
collections: [
{
type: mongoose.Schema.Types.ObjectId,
ref: "collection"
}
]
});

mongoose.model('users', userSchema);

集合架构:

const mongoose = require('mongoose');
const { Schema } = mongoose;

const collectionSchema = new Schema({
type: String,
name: String,
gamesCollected: [
{
id: Number
}
]
});

mongoose.model('collection', collectionSchema);

我的路线:

router.get('/get_collection', (req, res) => {    
const collection = new Collection({
type: 'SNES',
name: 'First SNES Collection',
gamesCollected: [{ id: 5353 }]
}).save();

User.update({googleID: req.user.googleID}, {$push: {collections: collection}});
});

最佳答案

Save不是同步操作而是异步操作,因此您需要使用 promise它返回并处理它,一旦完成就更新用户模型。这些行中的一些内容:

router.get('/get_collection', async (req, res) => {
let collection = new Collection({
type: 'SNES',
name: 'First SNES Collection',
gamesCollected: [{ id: 5353 }]
})
await collection.save().exec();
await User.update(
{googleID: req.user.googleID},
{$push: {collections: collection._id}}
).exec();
});

关于javascript - Mongoose + Mongodb User.update 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53160429/

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