2016-04-24 57 views
0

在Meteor中,我使用客戶端上的Collection.update()(1)的返回值向用戶顯示消息。該方法在客戶端和服務器上運行。帶回調的Collection.update()返回undefined

考慮下面的方法,它工作正常(返回1):

Meteor.methods({ 
    updateDocument(documentId) { 
     return Collection.update(
      documentId, 
      {$set: {updatedBy: this.userId}} 
     ); 
    } 
}); 

接下來,考慮下面的方法,它返回undefined

Meteor.methods({ 
    updateDocument(documentId) { 
     return Collection.update(
      documentId, 
      {$set: {updatedBy: this.userId}}, 
      (error, result) => { 
       return 1; 
      } 
     ); 
    } 
}); 

缺少什麼我在這裏?爲什麼不updateDocument()返回1

回答

2

當您提供回調函數時,則update調用是異步的。它不返回任何內容,並且在更新完成之前,您的Meteor方法可能會完成。

Meteor docs報價:

在服務器上,如果你不提供一個回調,然後更新塊 直到數據庫確認寫,或者如果 出事了拋出異常。如果您確實提供了回撥,則立即更新返回 。一旦更新完成,在發生故障的情況下,將使用 單一錯誤參數調用該回調,或者在更新爲 成功時,使用第二個參數 指示受影響文檔的數量。

+0

好的,謝謝。我想我明白。現在,我如何讓用戶知道更新是成功的?換句話說,如果客戶端的事件函數調用的方法沒有返回任何東西,那麼它如何知道文檔已經成功更新? –

+0

如果發生錯誤,同步'update'函數將引發異常。成爲一名優秀的口袋妖怪大師,抓住他們。 :) – aedm