2017-10-14 144 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的工作原理!如果您有其他问题,请发布(问)一个新问题:) –