2014-06-20 233 views
1

我目前正在構建我的第一個Meteor應用程序,並且在將文檔插入集合客戶端方面遇到了一些麻煩。流星客戶端upsert不允許

我正在尋找更新文檔,如果它已經在集合中,並插入一個,如果沒有。目前我的代碼看起來像這樣

UserData.upsert(
      { 
       // Selector 
       _id: Meteor.users.findOne({})._id 
      }, 
      { 
       // Modifier 
       $set: { 
        user: Meteor.users.findOne({}), 
        currentquestions: currentQuestion 
       } 
      } 


     ); 

然後由

UserData.allow({ 
insert: function (userId) { 
    // the user must be logged in, and the document must be owned by the user 
    return (userId != null); 
}, 
update: function (userId) { 
    // the user must be logged in, and the document must be owned by the user 
    return (userId != null); 
}, 
upsert: function (userId) { 
    // the user must be logged in, and the document must be owned by the user 
    return (userId != null); 
} 

})

這適用於插入和更新允許的。但對於UPSERT我得到以下錯誤

Error: allow: Invalid key: upsert 

Ofcourse我可以使用的if/else與插入/更新,但似乎有點多餘,當.upsert應該做確切的伎倆。 有誰知道如何允許.upsert客戶端?

+0

這是否有幫助:http://stackoverflow.com/questions/21178078/meteor-allow-upsert – colllin

+0

爲什麼不只是使用'Meteor.userId()'? 'findOne'可以抓住一個隨機的用戶。 –

回答

0

那是因爲您沒有爲upsert定義單獨的允許規則,僅適用於插入,更新和刪除(http://docs.meteor.com/#allow)。此外,「upsert與調用更新並將upsert選項設置爲true(..)」(http://docs.meteor.com/#upsert)相同。

所以最簡單的是:只要確保您的更新規則是正確的。