Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript mongodb没有插入完整的数组_Javascript_Arrays_Node.js_Mongodb - Fatal编程技术网

Javascript mongodb没有插入完整的数组

Javascript mongodb没有插入完整的数组,javascript,arrays,node.js,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').MongoClie

我使用以下命令将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");});
}


我的问题是,我的代码没有将数组中的所有499项插入LookUpdatea对象,它只输入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");});`

首先,使用npm安装安装异步模块-保存异步模块多亏了你,现在我得到了我想要的东西,没有任何问题,如果你告诉我为什么使用这个模块或者我们在这里做了什么,那就太好了,我仍然不明白。@MhadMorph你所做的是插入异步数据,您正在使用for循环,它不会等待查询保存数据并循环值,一次又一次,这就是为什么您会得到不希望的结果,有时它只保存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");});`