如何从Parse查询返回一个对象?

时间:2016-01-17 12:25:37

标签: 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: function (object, error) {
      alert(`Error: ${error.code} ${error.message}`)
    }
  })
  console.log(result)
  return result

第一个console.log(result)输出对象:

  

对象{content:" trstrtrts",createdAt:" 2016-01-17T11:20:30.694Z",   标题:"文件2",updatedAt:" 2016-01-17T11:20:30.694Z",wordCount:   " 3000" ...}

但第二个没有回报。从Parse查询返回对象的正确方法是什么?

修改

基于Anon的回答,我尝试了这个:

store.js:

store.first = (id) => {
  var query = new Parse.Query(Document)
  return query.get(id)
}

export default store

main.js:

store.first(to.params.id).then((document) => {
   console.log(document.toJSON())
   return document.toJSON()
 })

但是我收到以下错误:

  

未捕获TypeError:对象函数ParsePromise(){   _classCallCheck(this,ParsePromise); this._resolved = false; this._rejected = false; this._resolvedCallbacks = [];   this._rejectedCallbacks = [];没有方法'所有'

1 个答案:

答案 0 :(得分:1)

第二个

 console.log(result) 

发生在第一个之前.Query是一个异步操作。 这样做的正确方法是使用promises。例如,您可以

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');

打印的顺序是       一个       C       B'/ P>

(我们有超时但是超时的功能在事件循环中进行并在完成功能后发生)

有关详情,请阅读https://developer.mozilla.org/he/docs/Web/JavaScript/EventLoop 关于eventloop