2015-12-07 3 views
0

Вот мой кодАнализировать код облако - проблемы с обещаниями

Parse.Cloud.define('filters', function(request, response){ 
var _ = require('underscore'); 
var customerGeoPoint = request.params.geolocation; 
var rating = request.params.rating 

var finalList = []; 
// var arr = []; 
var promises = []; 
var query = new Parse.Query('ServiceProvider'); 
query.withinMiles("geoLocation", customerGeoPoint, 10); 

query.find().then(function(spobjs){ 
    return spobjs 
}).then(function(newval){ 
    var query2 = new Parse.Query('Customer'); 
    for(i in newval){ 
    query2.withinMiles('geoLocation', newval[i].get('geoLocation'), newval[i].get('serviceRadius')); 
    var sp = query2.first() 
     if(sp != null) 
     { 
     finalList.push(newval[i]); 
     } 
    } 
    return finalList ; 
}).then(function(resval){ 
    var arr = []; 
    var arr = _.sortBy(resval,'averageRating'); ** This Line doesn't work ** 
    console.log(arr[0]); 
    return arr ; 
}).then(function(checkval){ 

    response.success(checkval); 

},function(error){ 
    // console.log(error); 
    response.error(error); 
}); 

}); 

В приведенном выше коде строка, которая гласит: «Эта линия не работает» ничего не делает. Я потребовал underscore.js, но все равно он не сортирует массив. finalList значение возвращается к thenpromise после, но он не сортирует и возвращает то же значение, что и finalList. Может кто-нибудь сказать мне, в чем проблема с этим кодом?

ответ

2

При сортировке синтаксического анализа объектов с underscorejs, то iteratee должен вернуть значение атрибута с помощью get() ...

var arr = _.sortBy(resval, function(o) { return o.get('averageRating'); }); 
+0

Благодаря человеку! Это работает сейчас :). Эта итерационная вещь предназначена только для сортировки или других функций в underscorejs с синтаксическим разбором? – nik

+0

Рад помочь. В любом месте, где вы передаете массив элементов синтаксического разбора в функцию подчеркивания, и где эта функция предлагает яркий ярлык имени атрибута вместо итерации, вы будете застревать в записи функции iteratee, так как подчеркивание не знает что вы действительно передаете базовые объекты. – danh

+0

Ahh ... gotcha спасибо человеку :) – nik

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