У меня возникла странная проблема.Добавить объект в массив внутри запроса parse.com
Мне нужно добавить объекты в массив, и использование нормального array.push(object)
не работает (ничего не толкается).
Толчки происходят как внутри, так и снаружи для циклов в запросах parse.com.
Я пробовал некоторые отладки, а console.log на всех шагах возвращает результаты, как я ожидаю.
Мой вопрос:: Есть ли что-то, что я не знаю о том, как запросы parse.com работают в связи с array.push или, может быть, for-loops? Любая помощь будет оценена по достоинству.
Данные являются объектами (массивом) и объектом (объектом).
Я бы ожидать результата что-то вроде:
entities = [
{ url: '/first', changefreq: 'weekly', priority: 1.0 },
{ url: '/second', changefreq: 'monthly', priority: 0.9 },
{ url: '/third', changefreq: 'weekly', priority: 0.5 }
];
Но я получаю только самый первый толчок, чтобы появиться в массиве.
Я проверил все запросы parse.com, и они вернут данные, которые мне нужны, и используйте их в приведенном ниже примере.
Мой код:
module.exports = {
getSitemap: function(callback) {
"use strict";
var Page = Parse.Object.extend('Page'),
pageQuery = new Parse.Query(Page),
Article = Parse.Object.extend('Article'),
articleQuery = new Parse.Query(Article),
Profile = Parse.Object.extend('Profile'),
profileQuery = new Parse.Query(Profile),
Category = Parse.Object.extend('Category'),
categoryQuery = new Parse.Query(Category),
entities = [],
entity = {},
i,
sitemap;
entity.url = '/';
entity.changefreq = 'weekly';
entity.priority = 1.0;
entities.push(entity);
entity = {};
articleQuery.equalTo('published', true);
articleQuery.select("permalink");
articleQuery.find().then(function(results) {
for (i = 0; i < results.length; i += 1) {
entity.url = '/article/' + results[i].get('permalink');
entity.changefreq = 'monthly';
entity.priority = 0.9;
entities.push(entity);
entity = {};
}
}, function(error) {
// do nothing
});
pageQuery.select("pagePermaLink");
pageQuery.find().then(function(results) {
for (i = 0; i < results.length; i += 1) {
entity.url = '/page/' + results[i].get('pagePermaLink');
entity.changefreq = 'monthly';
entity.priority = 0.7;
entities.push(entity);
entity = {};
}
}, function(error) {
// do nothing
});
profileQuery.select("objectId");
profileQuery.find().then(function(results) {
for (i = 0; i < results.length; i += 1) {
entity.url = '/author/' + results[i].id;
entity.changefreq = 'monthly';
entity.priority = 0.6;
entities.push(entity);
entity = {};
}
}, function(error) {
// do nothing
});
categoryQuery.select("categoryPermaLink");
categoryQuery.find().then(function(results) {
for (i = 0; i < results.length; i += 1) {
entity.url = '/category/' + results[i].get('categoryPermaLink');
entity.changefreq = 'weekly';
entity.priority = 0.5;
entities.push(entity);
entity = {};
}
}, function(error) {
// do nothing
});
sitemap = sm.createSitemap({
hostname: 'http://brianemilius.com',
cacheTime: 300000,
urls: entities
});
sitemap.toXML(function(err, xml) {
if (err) {
callback({
error: err
});
}
callback(xml);
});
}
};
Это может быть полезно прочитать о [JavaScript обещает] (http://blog.parse.com/learn/engineering/whats-so-great-about-javascript-promises/) – Skam
я уже сделал и не нашел ничего, что могло бы объяснить мою проблему. Может быть, вы видите то, чего я не знаю? –
Пожалуйста, console.log (результаты). в обратном вызове. Можете ли вы не получать данные. –