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

如何将 JSON 数组保存到 mongodb 集合中

AngularJS、NodeJS:将数据保存到 Json 文件或数据库

将 Gson 的 JsonObject 保存为没有 Members 对象的纯 Json 到 mongoDB

如何通过 JSON 对象将数据保存到 mongodb 数据库?

将 Python Pandas 数据框转换为 JSon 格式并通过使用 Python 添加其列名保存到 MongoDB 数据库中