2015-11-27 3 views
1

Я не уверен, что здесь не так/как я могу это исправить.Parse: Cloud Code Variable Declartaion

Parse.Cloud.job("expireTimes", function(request, response) { 
var currentTime = new Date().getTime()/1000; 
var Wait = Parse.Object.extend("Wait"); 
Parse.Object.registerSubclass("Wait", Wait); 
var query = new Parse.Query(Wait); 
query.select(["times", "timestamp"]); 
query.find({ 
    success: function(results) { 
     for (var i = 0; i < timestamps.length; i++) { 
      if (currentTime >= timestamps[i] + 60) { 
       // Delete old wait times 
       timestamps.splice(i, 1); 
       times.splice(i, 1); 
       i--; 
      } else { 
       break; 
      } 
     }; 
     response.success("Got " + results.length + " Query results: " + results[0].objectId); 

    }, 
    error: function(error) { 
     response.error("Request failed with response code"); 
     console.error("Request failed with response code "); 
    } 
}); 
}); 

Это сказать это мне, что метки времени не определено:

I2015-11-27T17:00:03.419Z]Deployed v17 with triggers: 
Jobs: 
    expireTimes 
E2015-11-27T17:01:04.489Z]v17 Ran job expireTimes with: 
    Input: {} 
    Result: ReferenceError: timestamps is not defined 
    at e.query.find.success (main.js:9:24) 
    at e.<anonymous> (Parse.js:14:28224) 
    at e.s (Parse.js:14:27156) 
    at e.n.value (Parse.js:14:26575) 
    at e.s (Parse.js:14:27284) 
    at e.n.value (Parse.js:14:26575) 
    at e.s (Parse.js:14:27284) 
    at e.n.value (Parse.js:14:26575) 
    at e.<anonymous> (Parse.js:14:27228) 
    at e.s (Parse.js:14:27156) 

Не уверен, что это означает, что/как это исправить. Я бы предположил, объявить временные метки, но я думал, что это уже сделано с извлечением массивов в столбцах «times» и «timestamp»

Любая помощь будет очень признательна. Спасибо

ответ

1

Нет такой идеи как query.select(). Единственными определенными переменными в функции завершения являются результаты (массив извлеченных объектов синтаксического анализа) и currentTime, которые вы определяете в охватывающей области.

registerSubclass не полезен, если вы фактически не определяете подкласс.

В качестве начального упражнения попробуйте запросить класс и зарегистрировать результаты. Запрос может быть столь же простым, как:

var query = new Parse.Query("Wait"); 
query.find().then(function(results) { 
    console.log(JSON.stringify(results)); 
    var firstId = (results.length>0)? results[0].id : "n/a"; // notice "id", not "objectId" 
    console.log("Got " + results.length + " First id: " + firstId); 
    response.success(results); 
}, function(error) { 
    response.error(error); // return the real error so we can look at it 
}); 

Если timestamp это определенный атрибут вашего класса Wait, вы можете получить его получить() ...

// just like before where you got the id, try "getting" an attribute 
var firstTimestamp = (results.length>0)? results[0].get("timestamp") : "n/a"; 
// remember, this depends on you defining a "timestamp" attribute on the class 
+0

Оба '' timestamp' и раз 'являются массивами. 'times' принимает время пользователя, которое они отправили, и' timestamp' просто просто занимает время, когда пользователь отправил его, и помещает его в Int. Таким образом, я могу увидеть, если 'timestamp + 3600

+0

Не уверен, что это полезно, но помните, что все объекты parse предоставляют createdAt и updatedAt, и эти запросы могут сравнивать их с неравенством равенства (но обычно лучше), например 'query.lessThan (" updatedAt ", someDate)', где someDate является объектом даты JS. – danh

+0

Также обратите внимание, что свойства массива можно получить с помощью get(), и их содержимое зацикливается как любой массив JS. – danh