迭代对象数组,并将每个对象保存到MongoDB
我想在从Facebook端点接收数据后,将每个对象从数组保存/插入到我的MongoDB中。迭代对象数组,并将每个对象保存到MongoDB
我将如何遍历返回的对象数组,然后将其保存到我的mongoDB? :)从我的路线,在那里我从Facebook的API接收数据用的SuperAgent
代码
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": {}
}]
我的模型/ Schema
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)
我曾尝试,但没有工作尚未
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;
可以迭代这个数组,然后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();
非常感谢,并且在我的路线中,我应该在.end之后放置它吗?同样在var bulk = db.items.initializeUnorderedBulkOp()中,我应该用我的模型或数据库来替换数据库? – DbTheChain
也是。在数据返回后直接进行。 –
酷感谢,我试过你的建议,但我似乎无法得到它的工作,你能检查我在帖子中添加的代码吗? :) – DbTheChain
为什么你迭代对象,你是否想在将对象插入到你的db之前改变对象。你还有什么模型模式? 有没有理由不使用$ pushAll''Bulk.insert()'? –
我想保存数组中的每个对象,然后我必须遍历每个对象的权利或是一个错误的方法?我用模型 – DbTheChain
更新了帖子,好像你想要映射数组并返回具有所需属性的对象数组。然后你可以做一个bulk.insert来一次插入所有的对象。请参阅https://docs.mongodb.com/manual/reference/method/Bulk.insert/ –