最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

Mongoose模型,有效清理解析数组

IT培训 admin 4浏览 0评论

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默认添加的其他对象的情况下从数组中读取数据?将项目添加到现有模型的最佳方法是什么?

感谢任何帮助,谢谢。

回答如下:

如果你想对更新过程有更多的控制权,你可以这样做,在mongoose文件中它建议你可以先查询你想要更新的项目/文件,一旦查询了那个文件,你就可以进行更改对它来说,如果它包含一个数组,你可以推送它或从它弹出或什么...

它在你的掌控之中

所以,

   if((message.author.id === g.ownerID) && (g.id.toString() === tocGuild) && message.content.startsWith("!updatealist")) 
{ 
    let mc = message.content.replace("!updatealist ", "");
    globalConfiguration.findOne({"your query"}, function(err, data) { 
        if (err) throw (err); 
            data.array.push("something");

            data.save();// save it again with updates
            var str = JSON.stringify(data); str = str.replace(RegExp(/"_id"|"__v"|'/g),""); var arr = str.split(`","`);
        });
}

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默认添加的其他对象的情况下从数组中读取数据?将项目添加到现有模型的最佳方法是什么?

感谢任何帮助,谢谢。

回答如下:

如果你想对更新过程有更多的控制权,你可以这样做,在mongoose文件中它建议你可以先查询你想要更新的项目/文件,一旦查询了那个文件,你就可以进行更改对它来说,如果它包含一个数组,你可以推送它或从它弹出或什么...

它在你的掌控之中

所以,

   if((message.author.id === g.ownerID) && (g.id.toString() === tocGuild) && message.content.startsWith("!updatealist")) 
{ 
    let mc = message.content.replace("!updatealist ", "");
    globalConfiguration.findOne({"your query"}, function(err, data) { 
        if (err) throw (err); 
            data.array.push("something");

            data.save();// save it again with updates
            var str = JSON.stringify(data); str = str.replace(RegExp(/"_id"|"__v"|'/g),""); var arr = str.split(`","`);
        });
}
发布评论

评论列表 (0)

  1. 暂无评论