我正在使用一个使用Parse作为后端的移动应用程序,我遇到了find函数的问题。以以下格式运行find函数时:
var = firstQuery = (new Parse.Query("MyParseObject"))
.find(),
secondQuery = (new Parse.Query("OtherParseObject")).get(id)
// there is only one object that firstQuery can find
Parse.Promise.when(firstQuery, secondQuery)
.then( function (query1res, query2res) {
// query1res should return only one result wrapped in an array,
// instead query1res is an object without a get method
query1res.forEach (function (res) {
// this fails: cannot get .length of undefined
})
// ... do stuff with the returned data
})
我有什么遗失的吗?我确信之前曾经工作过,但现在却没有。
由于Parse的工作原理,很难正确地调试这个问题,但是他们的文档概述了这应该返回一个数组,但它不会在这个时间点。
感谢您的帮助。
答案 0 :(得分:0)
基于Parse docs,看起来Parse.Promise.when
需要一个数组,尽管基于this support thread,结果将作为单个参数传递给then
处理程序。试一试:
Parse.Promise.when([firstQuery, secondQuery])
.then(function (query1res, query2res) {
// use query1res and query2res
});
答案 1 :(得分:0)
原来这是代码中更深层次的函数,需要返回一个链接的承诺。添加之后,代码很开心。在forEach中调用了返回promise所需的函数,它与最初的两个查询无关,这就是抛出我的内容。