gpt4 book ai didi

javascript - 如何保持方法直到数组在mongodb中有2个元素

转载 作者:太空宇宙 更新时间:2023-11-04 01:29:55 25 4
gpt4 key购买 nike

我想使用nodejs和mongodb保留该方法,直到数组有2个或更多元素..

exports.Arrayelements = function(req, res) {
var elementName = req.body.elementName;
connection.arrayelements.updateMany({}, { $push: { sampleArray: [elementName] } }, { upsert: true });
connection.arrayelements.find({}, function(err, docs) {
if(err) throw err;
if(docs[0].elementName.length >= 2) {
// call this function
} else {
// want to call back again to push syntax until 2 or more elements in array
}
});
}

最佳答案

首先find返回一个游标,如果您只需要第一个文档 (docs[0]),则可以是 connection.arrayelements.findOne({})connection.arrayelements.find({}).next()

下一个问题是 updateManynext接受回调或返回 promise 。您没有在代码片段中使用 updateMany 返回的 promise ,这是一个错误。您的 find 语句可能会在更新发生之前返回结果,具体取决于竞争条件。

最后,使用 setInterval 是相当不明智的。如果您需要在循环中重复 updateMany 语句,直到 find 的结果符合您的条件 - 就这么做吧。使用 async/await 语法就这么简单:

exports.Arrayelements = async function(req, res) {
const elementName = req.body.elementName;
do {
await connection.arrayelements.updateMany({}, { $push: { sampleArray: [elementName] } }, { upsert: true });
const doc = await connection.arrayelements.findOne({});
} while(doc.elementName.length >= 2);
// call this function
}

关于javascript - 如何保持方法直到数组在mongodb中有2个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56440136/

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