2017-02-09 6 views
0

jsonオブジェクトをサードパーティ製のapiから個人用のローカルホストmongodbに保存する方法を理解できません。私は、私はAPIのコントローラ内に別のメソッドを作成するはずだと信じていますが、どのようなメソッドを使用する必要がありますか? これは私のコードですが、これは間違った質問です。サードパーティのAPIからjsonオブジェクトを保存する方法

//server.js 
var express = require('express'); 
var bodyParser = require('body-parser'); 
var path = require('path'); 
var mongoose = require('mongoose'); 
var Router = require('./routes'); 
var morgan = require('morgan'); 
var port = process.env.PORT || 3000; 

var app = express(); 

//database connect 
mongoose.connect('mongodb://localhost/Emagispace') 


app.use(
express.static('views'), 
bodyParser.json(), 
bodyParser.urlencoded({extended : true}), 
morgan('dev') 
); 

Router(app); 


app.listen(port,()=>{ 
console.log(`Server running on ${port}`); 

//Routes 

var API = require('./controllers/api'); 

module.exports = (app)=>{ 

app.get('/', (req, res)=>{ 
    res.sendFile('index.html', {root : './views'}); 
}); 

app.get('/api/emagispace', API.product) 
} 

//API controller 

var request = require('request-promise'); 
var baseURI = 'example'; 

module.exports = { 

product : (req, res)=>{ 
    request({ 
     method : 'GET', 
     url : `${baseURI}/api/emagispace/${req.query.products}` 
    }) 
    .then((resp)=>{ 
     console.log('Product list : ', resp); 
     res.send(resp).save(); 
    }) 
} 
} 
+0

マングースに保存するには、レスポンスオブジェクトではなく、mongooseオブジェクトでsaveを呼び出すことになります。私はmongooseのユーザーではありませんが、 - > 'mongoose.products.save(resp)'のようなものかもしれません – Keith

+0

私は試してみてくださいキース –

答えて

0

ドキュメントを保存するためにmongooseを使用するには、まずスキーマを指定する必要があります。

//product-model.js 
 
var mongoose = require('mongoose'); 
 
var Schema = mongoose.Schema; 
 

 
var ProductSchema = new Schema({ 
 
\t name: String, 
 
\t price: String, 
 
\t //And all other data you need 
 
}); 
 

 
var Product = mongoose.model('Product', ProductSchema);

はまた、あなたが検証および他の多くを行うことができます。 the docsを参照してください。

次に、あなたの書類の上で1つのショットまたはiterrateに保存する.insertManyを使用することができます。この後

var Product = require('../models/product-model.js'); 
 

 
... 
 

 
.then((resp)=>{ 
 
     //I assume that resp is an array of products here 
 
\t console.log('Product list : ', resp); 
 

 
\t //Go over your product list and save them 
 
\t for (var product of resp) { 
 
\t \t var p = new Product(product); 
 
\t \t p.save(); 
 
\t } 
 
    
 
     //OR 
 
\t Product.insertMany(resp); 
 

 
\t res.send(resp); 
 
})

あなたのローカルDBに製品のコレクションを持っています。 必要に応じて、これらの呼び出しをメソッドにワープすることもできます。

+0

これは私が探していたものでした! –

+0

こんにちはAntonio私は多くのデータを保存するループに問題があります。ループ内で無限を作成することは可能でしょうか? –

関連する問題