使用变量将json文件插入mongodb

时间:2014-10-27 13:42:05

标签: javascript json node.js mongodb

我正在尝试将json文件插入mongodb。当我直接在插入语句中输入JSON时,它工作正常。但是,当我尝试使用fs.readfile中的数据变量(相同的JSON)时,插入失败。当我使用变量而不是原始JSON时,我现在没有收到错误,只是集合中的数据。这是代码..

var MongoClient = require('mongodb').MongoClient
    , format = require('util').format;

MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) {
    if(err) throw err;

 var fs = require('fs');
var mydocuments = fs.readFile('testNames.json', 'utf8', function (err, data) {
    var collection = db.collection('contactCollection');
     collection.insert(data, function(err, docs) { //This insert Fails
        collection.count(function(err, count) {
            console.log(format("count = %s", count));
            console.log("[" + data + "]" );
            db.close();
        });
    });

var MongoClient = require('mongodb').MongoClient
    , format = require('util').format;

MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) {
    if(err) throw err;

 var fs = require('fs');
var mydocuments = fs.readFile('testNames.json', 'utf8', function (err, data) {
    var collection = db.collection('contactCollection');
     collection.insert({firstname: "Bill"}, function(err, docs) { //This insert succeeds
        collection.count(function(err, count) {
            console.log(format("count = %s", count));
            console.log("[" + data + "]" );
            db.close();
        });
    });

1 个答案:

答案 0 :(得分:0)

您将文件的内容编码为UTF-8字符串并尝试将其插入数据库。在插入数据之前,需要使用JSON.parse()将字符串解析为JSON。

var fs = require('fs');
var mydocuments = fs.readFile('testNames.json', 'utf8', function (err, data) {
var collection = db.collection('contactCollection');
 collection.insert(JSON.parse(data), function(err, docs) { // Should succeed
    collection.count(function(err, count) {
        console.log(format("count = %s", count));
        console.log("[" + data + "]" );
        db.close();
    });
});