Javascript 如何从解析查询返回对象?
我就是这样做的:Javascript 如何从解析查询返回对象?,javascript,parse-platform,Javascript,Parse Platform,我就是这样做的: const Document = Parse.Object.extend('Document') const query = new Parse.Query(Document) let result = {} query.get(id, { success: function (object) { result = object.toJSON() console.log(result) }, error: func
const Document = Parse.Object.extend('Document')
const query = new Parse.Query(Document)
let result = {}
query.get(id, {
success: function (object) {
result = object.toJSON()
console.log(result)
},
error: function (object, error) {
alert(`Error: ${error.code} ${error.message}`)
}
})
console.log(result)
return result
第一个console.log(结果)
输出对象:
对象{content:“trstrtrts”,createdAt:“2016-01-17T11:20:30.694Z”,
标题:“文件2”,更新日期:“2016-01-17T11:20:30.694Z”,字数:
“3000”…}
但是第二个没有返回任何内容。从解析查询返回对象的正确方法是什么
编辑:
store.first = (id) => {
var query = new Parse.Query(Document)
return query.get(id)
}
export default store
store.first(to.params.id).then((document) => {
console.log(document.toJSON())
return document.toJSON()
})
根据Anon的回答,我尝试了以下方法:
store.js:
store.first = (id) => {
var query = new Parse.Query(Document)
return query.get(id)
}
export default store
store.first(to.params.id).then((document) => {
console.log(document.toJSON())
return document.toJSON()
})
main.js:
store.first = (id) => {
var query = new Parse.Query(Document)
return query.get(id)
}
export default store
store.first(to.params.id).then((document) => {
console.log(document.toJSON())
return document.toJSON()
})
但我得到了以下错误:
未捕获的TypeError:对象函数ParsePromise(){
_classCallCheck(this,ParsePromise);this.\u resolved=false;this.\u rejected=false;this.\u resolvedCallbacks=[];
此._rejectedCallbacks=[];}没有方法“all”
第二
console.log(result)
在第一个之前发生。查询是一个异步操作。
正确的做法是使用承诺。比如你能做什么
function foo(id){
var Document = Parse.Object.extend('Document');
var query = new Parse.Query(Document);
return query.get(id);
}
然后像这样使用函数foo:
foo(objectID).then(function(object){
//do something with the object.
})
下面是一个在js中显示异步的示例
console.log('a');
setTimeOut(function(){console.log('b')},0);
console.log('c');
印刷的顺序是
A.
C
b
(我们有超时0,但超时函数进入事件循环,并在函数完成后发生)
有关更多信息,请阅读
关于eventloop谢谢你的回答。但是我得到了一个类型错误:
uncaughttypeerror:Object function ParsePromise(){u classCallCheck(this,ParsePromise);this.\u resolved=false;this.\u rejected=false;this.\u resolvedCallbacks=[];this.\u rejectedCallbacks=[];}没有方法“all”
它应该可以工作,可能是常量的问题。。尝试使用var检查相同的问题。可能是因为我必须设置resolve
和reject
回调?不。这不是resolve/reject。我要检查一下,我忘了foo(),然后我就忘了foo。你必须写foo(),然后()