我正在尝试将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();
});
});
答案 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();
});
});