2017-04-25 2 views
0

배열의 각 개체를 Facebook 끝점에서받은 후 MongoDB에 저장/삽입하고 싶습니다.개체 배열 반복 및 MongoDB에 각각 저장

반환 된 객체 배열을 반복하고 내 mongoDB에 저장하는 방법은 무엇입니까? :) 내가 슈퍼 에이전트와 페이스 북 API에서 데이터를 수신 내 국도에서

코드

var express = require('express'); 
var router = express.Router(); 
var request = require('superagent') 
var utils = require('../utils') 

router.get('/facebook', function(req, res, next) { 

    var url = "https://graph.facebook.com/v2.9/xxxxxxxx" 

    request 
    .get(url) 
    .set('Accept', 'application/json') 
    .end(function(err, result){ 
     var parse = JSON.parse(result.text) 
     res.json({ 
     confirmation: 'success', 
     response: parse 
     }) 
    }); 

}); 

module.exports = router; 

각 개체는 다음과 같습니다

"confirmation": "success", 
"response": { 
"data": [ 
{ 
"message": "Søger et godt hjulsæt til Max 1000\nkr.1,000 - Løsning, Vejle, Denmark\n\nVed at ser er en masse fine hjulsæt er er i overskud der ude er der nogen der har et rigtig fint hjulsæt i vil sælge mig ?", 
"from": {}, 
"permalink_url": "https://www.facebook.com/groups/306677009409252/permalink/1333896396687303/?sale_post_id=1333896396687303", 
"type": "photo", 
"created_time": "2017-04-25T14:26:39+0000", 
"picture": "https://scontent.xx.fbcdn.net/v/t1.0-0/q81/s130x130/18157109_10155237818408609_6730263000530603997_n.jpg?oh=e4198809641ce4549592065f9ce1d522&oe=5993A162", 
"id": "306677009409252_1333896396687303", 
"attachments": {} 
}, 
{ 
"message": "Bontrager cykelhjelm\nkr.250 - Lemvig\n\nNy cykelhjelm bontrager starvos str S\n51-57 cm ny og i original emballage. Ny pris 649 kr", 
"from": { 
"name": "Tanja Olsen", 
"id": "10155372412188754" 
}, 
"name": "Photos from Tanja Olsen's post", 
"permalink_url": "https://www.facebook.com/groups/306677009409252/permalink/1333870013356608/?sale_post_id=1333870013356608", 
"type": "photo", 
"created_time": "2017-04-25T13:49:26+0000", 
"picture": "https://scontent.xx.fbcdn.net/v/t1.0-0/s130x130/18118873_10155371971413754_3345993522211660552_n.jpg?oh=de0d10dc9e0589789e023819402ef399&oe=598FAE09", 
"id": "306677009409252_1333870013356608", 
"attachments": {} 
}] 

내 모델/스키마

var mongoose = require('mongoose') 

var FeedSchema = new mongoose.Schema({ 
    type: {type: String, default: ''}, 
    title: {type: String, default: ''}, 
    image: {type: String, default: ''}, 
    description: {type: String, default: ''}, 
    timestamp: {type: Date, default: Date.now} 
}) 

module.exports = mongoose.model('FeedSchema', FeedSchema) 

내가 시도했지만 didnt 한 일이 아직

var express = require('express'); 
var router = express.Router(); 
var request = require('superagent') 
var utils = require('../utils') 
var Feed = require('../models/Feed') 

router.get('/facebook', function(req, res, next) { 

    var url = "https://graph.facebook.com/v2.9/XXXXXXX" 
    var bulk = Feed.initializeUnorderedBulkOp(); 

    request 
    .get(url) 
    .set('Accept', 'application/json') 
    .end(function(err, result){ 
     var parse = JSON.parse(result.text) 

     var object = parse.data 

     array.forEach((object) => { 
     bulk.insert({ 
      type: object.type, 
      title: object.title, 
      image: object.image, 
      description: object.description 
     }) 
     }) 
     bulk.execute(); 
    }); 


}); 

module.exports = router; 
+0

왜 개체를 반복하고 있습니까? db에 개체를 삽입하기 전에 개체를 변경하려고하십니까? 또한 당신은 스키마를 어떻게 모델링합니까? 거기에 왜 $ pushAll, 'Bulk.insert()'를 사용할 수없는 이유가 무엇입니까? –

+0

배열에서 각 개체를 저장하려면 각 개체를 반복해야합니다. 그렇지 않으면 잘못된 방법입니까? 배열을 맵핑하고 필요한 속성을 가진 객체의 배열을 반환하려는 것처럼 들리는데 실제로 모델 – DbTheChain

+0

으로 게시물을 업데이트했습니다. 그런 다음 한 번에 모든 오브젝트를 삽입하기 위해 bulk.insert를 수행 할 수 있습니다. http : //docs.mongodb.com/manual/reference/method/Bulk.insert/ –

답변

0

당신은 배열을 반복하고 모든 개체를 bulk.execute 수있는 것.

var bulk = db.items.initializeUnorderedBulkOp(); 
array.forEach((object) => { 
    bulk.insert({ 
    type: object.type, 
    title: object.title, 
    image: object.image, 
    description: object.description, 
    timestamp: object.timestamp 
    }) 
}) 
bulk.execute(); 
+0

끝내 주셔서 고맙습니다. 또한 var bulk = db.items.initializeUnorderedBulkOp()에서 db를 모델 또는 데이터베이스로 바꾸어야합니까? – DbTheChain

+0

네, 둘 다 예. 데이터가 반환 된 후에 바로 수행하십시오. –

+0

쿨 고마워, 네가 제안한 것을 시도했지만 작동하지 않을 것 같은데, 내가 포스트에 추가 한 코드를 확인할 수 있니? :) – DbTheChain