2017-10-14 115 views
1

我發現loopback是一個很酷的框架。當我正在學習它時,我發現了一些有線的東西。關於LoopBack查詢

當我查詢時,例如,使用updateAll。如果參數未定義,則查詢將更新所有數據。

Employee.updateAll(
    { 
     username: undefined 
    }, 
    { 
     address: "ABC" 
    }, function(err, results) { 
}); 

爲什麼當值未定義時會更新所有數據?

回答

2

聲明:我是LoopBack框架的核心開發人員。

LoopBack的設計目的是要像undefined一樣對待undefined,就好像該屬性完全沒有定義一樣。這模仿了JSON格式的行爲,其中undefined值的屬性僅從字符串輸出中省略。

因此,您的過濾器{username: undefined}被解釋爲空過濾器{},它被解釋爲「無條件」,因此與所有記錄(模型實例)匹配。

如果您使用的是SQL數據庫來存儲數據,那麼使用null而不是undefined應該適合您。

檢測其他(NoSQL)數據庫中的空(undefined)屬性是非常棘手的,我沒有任何適合所有人的答案。

+0

在模型定義JSON文件頁面中,存在名爲required的模型屬性。當我運行創建時,如果所需設置爲true,它將返回驗證錯誤。但是,當我運行updateAll時,如果所需設置爲true,它將不會返回驗證錯誤。所以,只需要驗證創建,而不是updateAll或其他? – jdc9090

+0

@ jdc9090這不是StackOverflow的工作原理!如果您有其他問題,請發佈(問)一個新問題:) –