【发布时间】:2019-07-06 17:13:18
【问题描述】:
我在使用 mongoose 数组时遇到了一些问题,这可能是由于我对库缺乏了解,并且我无法在文档中找到我正在寻找的确切答案。
对于初学者,我有我的架构和模型声明:
const gConfig = new Schema({ aList: Array, maxChanLimit: Number }), globalConfiguration = mongoose.model('globalConfig', gConfig);
我的命令会获取数组,解析出 _id,然后将新项推送到数组中,并覆盖数据库中的现有项。
if((message.author.id === g.ownerID) && (g.id.toString() === tocGuild) && message.content.startsWith("!updatealist"))
{
let mc = message.content.replace("!updatealist ", "");
globalConfiguration.findOneAndUpdate({},{$push: {"aList":mc }}, { upsert: true }, function(err, data) {
if (err) return console.log(err);
var str = JSON.stringify(data); str = str.replace(RegExp(/"_id"|"__v"|'/g),""); var arr = str.split(`","`);
});
}
我觉得必须有更好的方法来做到这一点,根据我所读到的内容,我已经尝试过这样的事情:
globalConfiguration.findOneAndUpdate({},{$push: {"-_id aList":mc }}
但是,这并没有从数组中删除 _id。我想我这样做是一种方法,但我知道它效率不高,而且根本不是动态的,它在代码方面也非常庞大,可以使用库进行简化。
在实践中,使用 Mongoose 从模型中正确读取数组的最佳方法是什么?如果没有 Mongoose 默认添加的其他对象,您如何从数组中读取?将项目添加到现有模型的最佳方法是什么?
感谢您的帮助,谢谢。
【问题讨论】:
标签: arrays node.js mongodb mongoose