簡體   English   中英

插入到mongodb中的node.js

[英]node.js to insert into mongodb

我正在嘗試編寫一個簡單的程序,將犯罪列表存儲到mongodb數據庫中,但是在過去的幾個小時中,我嘗試了許多解決方案,而Node.js似乎只看到一個數據,並且未定義! 是的,文件interactionscitoyendo.csv不是空的,位於javascript文件的旁邊。 有任何想法嗎?

var fs = require('fs');
var file = fs.createWriteStream('interventionscitoyendo.csv');
var http = require('http');
var iclite = require("iconv-lite");
var csv = require('csv');
var object = csv();
var db = null;
var request = http.get("http://donnees.ville.montreal.qc.ca/dataset/5829b5b0-ea6f-476f-be94-bc2b8797769a/resource/c6f482bf-bf0f-4960-8b2f-9982c211addd/download/interventionscitoyendo.csv", function(response) {
response.pipe(file);
});

//Create Data-Base
var mongo = require("mongodb").MongoClient;
var url = "mongodb://localhost:27017/";

mongo.connect(url,{ useNewUrlParser: true }, function(err, database) {
if (err){ console.log(err);}
db = database;
var dbo = db.db("Crimes");
var ListeCrimes = [];
object.from.path('interventionscitoyendo.csv').to.array(function (data) {
for (var index = 0; index < data.length; index++) {
  var crime = {
    CATEGORIE: iclite.decode(data[index][0], "ISO-8859-1"),
    DATE: data[index][1],
    QUART: data[index][2],
    PDQ: data[index][3],
    X: data[index][4],
    Y: data[index][5],
    LATITUDE: data[index][6],
    LONGITUDE: data[index][7]
  };
  console.log(crime);
  ListeCrimes.push(crime);
}
console.log(data.length);
dbo.collection("Crimes").insertMany(ListeCrimes, function(err, res) {
    if (err){ console.log(err);}
    else { console.log("A1 works"); }
});
if (data.status == 200){
  db.close();
}
});
});

輸出為:

{ CATEGORIE: '',
DATE: undefined,
QUART: undefined,
PDQ: undefined,
X: undefined,
Y: undefined,
LATITUDE: undefined,
LONGITUDE: undefined }
1
A1 works

“文件”沒有完全寫入,由於沒有數據,因此開始讀取。 您應該等待完成事件引發。

file.on('finish', function() {
});

在此結束事件處理程序中,使用async方法關閉文件:file.close。
關閉文件后,您可以讀取並插入mongo db中。

file.on('finish', function() {
    file.close(function() {
        // Insert in mongoDB here
    });
});

等待文件完成管道傳輸后,解決方案應為:

var fs = require('fs');
var file = fs.createWriteStream('interventionscitoyendo.csv');
var http = require('http');
var iclite = require("iconv-lite");
var csv = require('csv');
var object = csv();
var db = null;
var request = http.get("http://donnees.ville.montreal.qc.ca/dataset/5829b5b0-ea6f-476f-be94-bc2b8797769a/resource/c6f482bf-bf0f-4960-8b2f-9982c211addd/download/interventionscitoyendo.csv", function(response) {
    response.pipe(file);
});

file.on('finish', function() {
    file.close(function() {
      // Create Data-Base
      var mongo = require("mongodb").MongoClient;
      var url = "mongodb://localhost:27017/";

      mongo.connect(url,{ useNewUrlParser: true }, function(err, database) {
          if (err){ console.log(err);}
          db = database;
          var dbo = db.db("Crimes");
          var ListeCrimes = [];
          object.from.path('./interventionscitoyendo.csv').to.array(function (data) {
              for (var index = 0; index < data.length; index++) {
                  var crime = {
                      CATEGORIE: iclite.decode(data[index][0], "ISO-8859-1"),
                      DATE: data[index][1],
                      QUART: data[index][2],
                      PDQ: data[index][3],
                      X: data[index][4],
                      Y: data[index][5],
                      LATITUDE: data[index][6],
                      LONGITUDE: data[index][7]
                  };
                  console.log(crime);
                  ListeCrimes.push(crime);
              }
              console.log(data.length);
              dbo.collection("Crimes").insertMany(ListeCrimes, function(err, res) {
                  if (err){ console.log(err);}
                  else { console.log("A1 works"); }
              });
              if (data.status == 200){
                  db.close();
              }
          });
      });
    });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM