有人知道如何从云代码模块返回Promise的结果吗?我正在使用示例here,但它一直告诉我选项是未定义的(如果我首先检查if(选项),则没有任何选项。
我调用函数module.function
作为承诺,但仍然没有得到结果。
想法?
编辑:我可以强迫它工作但是打电话:
module.function({},{
success:function(res){
//do something
},
error:function(err){
//handle error
}
})
但是这并不是很好,因为1)我必须把空对象放在那里2)我不能强迫对象像承诺一样工作,因此失去了链接的能力。
答案 0 :(得分:4)
不确定问题是否与模块或承诺有关。这里有一些代码说明了两者,创建了一个带有返回promise的函数的模块,然后从云函数中调用它。
创建一个这样的模块:
// in 'cloud/somemodule.js'
// return a promise to find instances of SomeObject
exports.someFunction = function(someValue) {
var query = new Parse.Query("SomeObject");
query.equalTo("someProperty", someValue);
return query.find();
};
通过要求包括模块:
// in 'cloud/main.js'
var SomeModule = require('cloud/somemodule.js');
Parse.Cloud.define("useTheModule", function(request, response) {
var value = request.params.value;
// use the module by mentioning it
// the promise returned by someFunction can be chained with .then()
SomeModule.someFunction(value).then(function(result) {
response.success(result);
}, function(error) {
response.error(error);
});
});