javascript - Node JS Mongoose 在 for 或 foreach 循环中更新查询,这可能吗?

标签 javascript ajax mongodb mongoose

我在一个数组中有 2 个不同的对象,我想使用这些对象来更新我的 mongodb 中的集合 所以我想使用这样的东西:

for (i = 0 ; i < array.length ; i++) {
Model.update({array[i]._id},{$set : {'credits_pending' : array[i].credits_pending}},false,true)
}

但它只更新我的数组的第一个值,我的意思是,array[0]

为什么?

最佳答案

一方面,Mongoose 中的更新(和大多数其他操作)是异步的,因此您需要等到操作完成后再继续。通常最好在同一个集合上一次执行一项操作。使用 for 循环,您在同一个集合上同时运行两个异步操作,这可能会产生不良行为。

第二,我认为你的Model.update()论点略有偏差。

我喜欢用 async.js使用 Mongoose 时,下面是一个关于如何一次更新一个对象数组的示例。

var async = require('async');

async.eachSeries(array, function updateObject (obj, done) {
    // Model.update(condition, doc, callback)
    Model.update({ _id: obj._id }, { $set : { credits_pending: obj.credits_pending }}, done);
}, function allDone (err) {
    // this will be called when all the updates are done or an error occurred during the iteration
});

关于javascript - Node JS Mongoose 在 for 或 foreach 循环中更新查询,这可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43229139/

相关文章:

C# MongoDB 驱动程序 [2.7.0] CountDocumentAsync 意外的 native 查询

javascript - 如何在 Node.js 应用程序中最好地保护 MongoDB 数据库 URL

javascript - 跨多个组件重用 React.useCallback() 函数

javascript - 多个链接的 getElementsByClassName 问题

javascript - Facebook 页面插件未在 FireFox 中显示

javascript - 使用 mySQL、Php 和 JS,我如何请求 dans 使用我数据库中的数据?

php - 我的 ajax 代码没有从 php 发送每一行

node.js - Mongoose elemMatch 返回一个空数组

javascript - Angular 应用程序的文本转语音 - "allowJs is not set"问题

javascript - 向多个服务器发送 Ajax 请求?