NodeJS 无法找到/更新数组中的对象

lnlaulya  于 2023-02-12  发布在  Node.js
关注(0)|答案(2)|浏览(77)

我的收藏是这样的:(不要问我为什么它是集合中的数组)

const postsSchema = mongoose.Schema({
    posts: {type: Array},
})

我想在其中找到一个文档,我尝试了以下操作:

Posts.aggregate([
        {
            $match:{
                'posts': { _id: new ObjectId(req.query.postId), }
            }
        }
])

还有这个

Posts.find({
   posts: {
        $elemMatch: { "_id" : new ObjectId(req.query.postId) }
   }
})

还有这个

Posts.findOne({
     'posts._id': new ObjectId(req.query.postId)
})
a64a0gku

a64a0gku1#

const { postId } = req.query.postId;
const result = await Posts.findOne({ _id: postId })
  • 如果你使用异步函数,你可以把await否则你可以做。然后方法来获得结果,并避免await关键字 *
agxfikkp

agxfikkp2#

为了帮助你,我可以给你看我用 typescript 写的代码。
使用await来检索给予并将函数置于异步模式
模型(用户作业是阵列

const UserSchema = new Schema<UserInterface>({
    discordId: {required: true, type: "string"},
    username: {required: true, type: "string"},
    githubName: {required: true, type: "string"},
    userJob: [String],
    paypal: {type: "string", default: null},
    commandCount: {type: "number", default: 0},
    commandInProgress: {type: "number", default: 0},
})

获取和更新

let job = "BigLol"
let result = await userModel.findOne({discordId: "0000022"});
result.userJob.push(job)
result.save();

相关问题