NodeJS:将 JSON 保存到 MongoDB
Posted
技术标签:
【中文标题】NodeJS:将 JSON 保存到 MongoDB【英文标题】:NodeJS: saving JSON to MongoDB 【发布时间】:2015-05-21 04:27:36 【问题描述】:我正在尝试从 API 获取 JSON 并将其存储到 MongoDB 数据库中。 显然,它不起作用。我的应用程序似乎徘徊在我尝试将数据保存到数据库的地方。请告知该怎么做。
这是我的代码:
var express = require('express');
var router = express.Router();
var http = require('http');
var mongo = require('mongoskin');
var db = mongo.db("mongodb://localhost:27017/zak", native_parser : true);
/* GET home page. */
router.get('/', function(req, res, next)
res.render('index', title: 'Express' );
);
var site = 'http://www.vsechnyzakazky.cz/api/v1/zakazka/?format=json&limit=2';
function getData(cb)
http.get(site, function(res)
// explicitly treat incoming data as utf8 (avoids issues with multi-byte chars)
res.setEncoding('utf8');
// incrementally capture the incoming response body
var body = '';
res.on('data', function(d)
body += d;
);
// do whatever we want with the response once it's done
res.on('end', function()
try
var parsed = JSON.parse(body);
catch (err)
console.error('Unable to parse response as JSON', err);
return cb(err);
// pass the relevant data back to the callback
cb(
parsed.objects
);
);
).on('error', function(err)
// handle errors with the request itself
console.error('Error with the request:', err.message);
cb(err);
);
function writeData (data, allGood)
// couple of visual checks if all looking good before writing to db
console.log('writing');
console.log(typeof data);
console.log(data);
db.collection('zakazky').save(data, function(error, record)
if (error) throw error;
console.log("data saved");
);
function allGood()console.log('all done');
getData(writeData);
// ---------------------
module.exports = router;
【问题讨论】:
数据是否出现在数据库中? 没有。我实际上手动插入了一些数据来测试我是否正确设置了数据库连接。使用“db.zakazky.find()”时,我看到了测试数据,但没有看到我要保存的数据 【参考方案1】:您调用的是save()
而不是insert()
。更改此部分,它将起作用:
// this should call insert, not save
db.collection('zakazky').insert(data, function(error, record)
if (error) throw error;
console.log("data saved");
);
【讨论】:
save
在这里应该可以正常工作。但是,一些 MongoDB 驱动程序可能期望第二个 .save()
参数为 an options
object。
谢谢@victorkohl。 Insert() 确实有效。我很惊讶并想知道为什么,因为这就是我最初一直在尝试使用的东西,并且只是作为最后的手段才切换到 save()。感谢您的帮助!以上是关于NodeJS:将 JSON 保存到 MongoDB的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 node js 将图像上传并保存到 mongodb
AngularJS、NodeJS:将数据保存到 Json 文件或数据库
将 Gson 的 JsonObject 保存为没有 Members 对象的纯 Json 到 mongoDB
如何通过 JSON 对象将数据保存到 mongodb 数据库?
将 Python Pandas 数据框转换为 JSon 格式并通过使用 Python 添加其列名保存到 MongoDB 数据库中