2015-06-11 167 views
1

我想要做的是从外部API创建我的数据库,首先我在我的DBController中创建一个函数loadData(req, res){},该函数从API中以JSON格式加载数据。用Sails.js保存JSON到MongoDb

我现在要做的是将这个返回的JSON保存在我的mongoDB中,我不知道如何。我该怎么做?

回答

2
  1. 请确保您有帆,蒙戈在模块中添加的适配器以其他方式使用, npm install sails-mongo --save
  2. 在config/connections.js中定义连接。如果您不使用其他数据库,则可以将其设置为config/models.js下的默认连接。

  3. 然后,您将不得不创建一个定义类似于外部API返回的JSON内容的模型。

例如,如果外部API正在返回。

[{ 
attribute1: '<value>', 
attribute2: '<value>', 
attribute3: '<value>' 
}] 

你想创建一个名为Model.js像下面在/ API /机型型号,

module.exports = { 

    attributes: { 
    attribute1: {type: 'integer'}, 
    attribute2: {type: 'string'}, 
    attribute3: {type: 'datetime'} 
} 
}; 

参考this获得关于创建模型的更多想法。

  • 然后在你的控制器,你可以这样做,

    var externalJSON = <API result JSON>; 
    Model.create(externalJSON) 
    .exec(function(err, user){ 
        //Processing 
    }); 
    
  • +0

    感谢,对externalJSON包含一些属性我不会在我的数据库,例如,如果我使用创建一个具有属性1和2的模型,即使它不匹配externalJSON,我的模型是否会创建? – Grimmy

    +1

    您可以在Mode.create之前从externalJSON中删除不需要的属性。尝试使用数组。在这里阅读模型的基础知识:http://sailsjs.org/#!/documentation/concepts/ORM/Models.html – Antariksha

    2

    如果JSON代表的匹配你的数据库的结构,那么所有你需要做的是加载文件记录数组并保存内容

    var data = require('./datafile.json') 
    MODEL.create(data).exec(function(err,result){/*...*/})