水线 - 字段总和的位置
Waterline - Where with sum of fields
我有以下型号Test
module.exports = {
attributes: {
a: {
type: 'number'
},
b: {
type: 'number'
}
}
}
我想构建一个查询,允许我在 where 语句中放入字段 a
和 b
的总和。
SQL 等于:
SELECT * FROM Test WHERE a + b = myValue
我在 sails 文档中读到关于 Criteria modifiers 的内容,但没有任何相关信息。
有什么巧妙的方法吗?当然我可以使用 native query 但我想避免这种情况,因为我必须将总和与其他修饰符一起使用。原因是我从单独的文件和本机查询生成动态查询,我还必须处理已经定义的功能,如 or、and 等。
我找到了解决方法。也许对某人有用。
这不是严格的 sails/node 解决方案,而是数据库解决方案,但是,它非常适合我的情况。
从MySQL 5.7开始有类似generated columns的东西。
Columns are generated because the data in these columns are computed based on predefined expressions.
我所要做的就是向我的 Test
模型添加一个额外的自动生成的列:
module.exports = {
attributes: {
a: {
type: 'number',
columnType: 'int'
},
b: {
type: 'number',
columnType: 'int'
},
c: {
type: 'number',
columnType: 'int GENERATED ALWAYS AS(a + b) VIRTUAL'
}
}
}
现在我可以进行这样的查询了:
const result = await Test.find({ c: 2 })
...我得到了正确的结果。 Waterline 像对待其他任何专栏一样对待我的专栏,数据库代替我做所有事情。
当然我可以将它与其他修饰符混合使用,没有任何问题。
到目前为止我还没有看到任何并发症。
我有以下型号Test
module.exports = {
attributes: {
a: {
type: 'number'
},
b: {
type: 'number'
}
}
}
我想构建一个查询,允许我在 where 语句中放入字段 a
和 b
的总和。
SQL 等于:
SELECT * FROM Test WHERE a + b = myValue
我在 sails 文档中读到关于 Criteria modifiers 的内容,但没有任何相关信息。
有什么巧妙的方法吗?当然我可以使用 native query 但我想避免这种情况,因为我必须将总和与其他修饰符一起使用。原因是我从单独的文件和本机查询生成动态查询,我还必须处理已经定义的功能,如 or、and 等。
我找到了解决方法。也许对某人有用。 这不是严格的 sails/node 解决方案,而是数据库解决方案,但是,它非常适合我的情况。
从MySQL 5.7开始有类似generated columns的东西。
Columns are generated because the data in these columns are computed based on predefined expressions.
我所要做的就是向我的 Test
模型添加一个额外的自动生成的列:
module.exports = {
attributes: {
a: {
type: 'number',
columnType: 'int'
},
b: {
type: 'number',
columnType: 'int'
},
c: {
type: 'number',
columnType: 'int GENERATED ALWAYS AS(a + b) VIRTUAL'
}
}
}
现在我可以进行这样的查询了:
const result = await Test.find({ c: 2 })
...我得到了正确的结果。 Waterline 像对待其他任何专栏一样对待我的专栏,数据库代替我做所有事情。
当然我可以将它与其他修饰符混合使用,没有任何问题。
到目前为止我还没有看到任何并发症。