gpt4 book ai didi

node.js - 使用 save() 在 Mongoose 模型中保存数组中的值时出现问题

转载 作者:太空宇宙 更新时间:2023-11-04 02:06:06 24 4
gpt4 key购买 nike

我正在尝试更新集合中的文档。我特别尝试更新字符串数组。以下是我的架构

var sampleSchema= mongoose.Schema({

fullName : String,
email : String,
rolesTaken : [String],

});

我基本上有一个这样的模式的数组。我想更新所有角色的 RolesTaken 数组。所以我做了以下事情

    var async = require('async');
var ATmapping = require('path to Schema');

ATmapping.find({},function(err,lists){
if(err){
console.log(err);
return;
}
if(lists.length > 0){
async.each(lists,function(list,callback){
if(!list.rolesTaken){
list.rolesTaken =[];
}
list.rolesTaken.push("Patient");
list.markModified('rolesTaken');
list.save(function(err,item){
if (err){
console.log(err);
}

console.log('Saved', item);
callback();
});
});
}
});

我浏览了很多,最流行的解决方案是添加markModified。但它似乎不适用于我的情况。当我添加 mongoose.debug 时,我得到以下内容

atmappings.update({ _id: ObjectId("59074b127adeef0004b84ac3"), __v: 7 }, { '$set': { rolesTaken: [] }, '$inc': { __v: 1 } })

正如你所看到的,尽管我添加了 markmodified 和 save(),但所扮演的角色还是空的。我想知道我是否遗漏了一些阻止我保存架构中的值的内容。

提前致谢。

最佳答案

以下是我如何使用 mongoose 将评论推送到我的一个应用程序中的线程。

Thread.findByIdAndUpdate(body.thread, { $push: { comments: comment.id }})

我只是通过 id 找到线程,然后使用 $push 运算符将评论 id 推送到稍后填充的 comments 属性。

您可以在此处阅读有关 $push 运算符的更多信息 (mongoose v3.4) https://docs.mongodb.com/manual/reference/operator/update/push/

关于node.js - 使用 save() 在 Mongoose 模型中保存数组中的值时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44320848/

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