2013-08-13 4 views
0

Я разрабатываю приложение и вам нужно добавить много элементов одновременно.
Как это сделать с node.js?Как добавить массив объектов в parse.com db?

This является модуль НПМ parse.com но нет никакого способа, как

insertAll("Foo", [objs...], ...) 

Я не хочу, чтобы вставить один объект каждый раз.

+0

Анализировать не отображается для поддержки мульти-вставки в их обслуживании: https://parse.com/docs/rest#objects-creating. Таким образом, вам, вероятно, придется перебирать коллекцию и вызывать '.insert()' для каждого. –

ответ

1

Напишите функцию удобства, которая взаимодействует между вашим приложением и parse.com. Вам придется писать код итерации один раз (или отладку шахту)

var async = require('async'); 
var parseApp = require('node-parse-api').Parse; 
var APP_ID = ""; 
var MASTER_KEY = ""; 
var parseApp = new Parse(APP_ID, MASTER_KEY); 

function insertAll(class, objs, callback){ 
    // create an iterator function(obj,done) that will insert the object 
    // with an appropriate group and call done() upon completion. 

    var insertOne = 
    (function(class){ 
     return function(obj, done){ 
     parseApp.insert(class, obj, function (err, response) { 
      if(err){ return done(err); } 
      // maybe do other stuff here before calling done? 
      var res = JSON.parse(response); 
      if(!res.objectId){ return done('No object id') }; 
      done(null, res.objectId); 
     }); 
     }; 
    })(class); 

    // async.map calls insertOne with each obj in objs. the callback is executed 
    // once every iterator function has called back `done(null,data)` or any one 
    // has called back `done(err)`. use async.mapLimit if throttling is needed 

    async.map(objs, insertOne, function(err, mapOutput){ 
    // complete 
    if(err){ return callback(err) }; 
    // no errors 
    var objectIds = mapOutput; 
    callback(null, objectIds); 
    }); 
}; 

// Once you've written this and made the function accessible to your other code, 
// you only need this outer interface. 

insertAll('Foo', [{a:'b'}, {a:'d'}], function(err, ids){ 
    if(err){ 
    console.log('Error inserting all the Foos'); 
    console.log(err); 
    } else { 
    console.log('Success!); 
    }; 
}); 
+0

Проблема заключается в том, что есть миллионы элементов, а для разбора есть ограничение на запросы (1 миллион) – shift66

+0

с помощью [batch api] (https://parse.com/docs/rest#objects-batch) или найти более масштабируемое хранилище система imo – Plato

Смежные вопросы