javascript - mongodb不插入完整数组

标签 javascript arrays node.js mongodb

我使用以下命令将 499 条目插入到子文档中,我从数组中获取数据 我的代码是这样的(我将简化数组,因为它太长了)

var bodyParser = require('body-parser');
var express = require("express");
var path = require("path");
var session = require('express-session');
var MongoClient = require('mongodb').MongoClient;
var ObjectId = require('mongodb').ObjectID;
var app = express();
var url = "mongodb://<username>:<password>@ds157342.mlab.com:57342/heroku_4p9ggb81";
MongoClient.connect(url, function(err, db) {
   if (err) throw err;
 var entery = ['غبة خاتون','حي الربيع','المغرب','القاهرة','الصليخ',.........];
   var collection = db.collection('customers');
for (var i = 0 ; i<entery.length; i++){
     var query =  {"_id" : ObjectId(),"value": entery[i],"key": i}
collection.updateOne({"_id":ObjectId("59ccdf34aabdd50011258cbf")},{ "$push": { "lookupdata": query }},{ upsert: true },
    function (err, result) {if (err) throw err;db.close();
  });
      console.log(i + "- " + entery[i] + " add data finsh ");}
app.listen(process.env.PORT || 3000, function (){
    console.log("server is started");});

我的文档结构是这样的

{
"_id" : ObjectId("59cce9fcaabdd50011258cc0"),
"formorder" : 1,
"isDisplayOnList" : true,
"issystemfield" : false,
"isMandatory" : false,
"description" : "-",
"labelname" : "name",
"displayname" : "name",
"fieldtype" : "list",
"formname" : "people",
"lookupdata" : [ 
    {
        "value" : "test",
        "key" : "1",
        "id" : "669c78c9-d086-442c-954b-d6d3f861664b"
    }
],

}

我的问题是,我的代码没有将数组中的所有 499 个条目插入到“lookupdata”对象中,它只输入 50 个条目,有时只是 120 个条目等,我多次尝试更改编写此代码的方式,但是问题还是一样。

最佳答案

您在不使用回调的情况下插入/更新数据,请使用异步模块。

    `var bodyParser = require('body-parser');
    var express = require("express");
    var path = require("path");
    var session = require('express-session');
    var MongoClient = require('mongodb').MongoClient;
    var ObjectId = require('mongodb').ObjectID;
    var async = require('async');
    var app = express();
    var url = "mongodb://<username>:<password>@ds157342.mlab.com:57342/heroku_4p9ggb81";
    MongoClient.connect(url, function(err, db) {
       if (err) throw err;
     var enteries = ['غبة خاتون','حي الربيع','المغرب','القاهرة','الصليخ',.........];
       var collection = db.collection('customers');
    async.eachOf(enteries, function(entery, key, callback){
         var query =  {"value": entery,"key": key}
    collection.updateOne({"_id":ObjectId("59ccdf34aabdd50011258cbf")},{ "$push": { "lookupdata": query }},{ upsert: true },
        function (err, result) {if (err) throw err;db.close();
      });
      }, function(err){
        if(err) throw err;
      });
          console.log(i + "- " + entery[i] + " add data finsh ");}
    app.listen(process.env.PORT || 3000, function (){
        console.log("server is started");});`

关于javascript - mongodb不插入完整数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46471245/

相关文章:

使用模板文字的 Javascript ES6 console.log 对象

javascript - 哪些版本的 Office 2016 支持 Office.context.reqirements.isSetSupported()?

javascript - 将对象数组减少/过滤为新的对象数组。

javascript - 省略 javascript 对象的索引

node.js - 在azure上socket.io传输是 'polling'而不是 'websocket'

php - 何时处理 Socket.io 通知?

javascript - 在 JavaScript 中链接复合赋值运算符

Javascript 在点击 anchor 时隐藏和显示 div

arrays - Matlab 中的逐元素数组复制

node.js - 整洁的架构 - 如何处理用例依赖关系