2

我想在创建错误报告之前确保这不是用户错误

使用sails-postgresql适配器我有一个查询(为了这个问题我已经简化了),它想要处理一个 NULL 值,但是无论我如何编写查询,我都会收到错误。我尝试了它的不同变体,但你应该在这里得到我想要做的事情的要点:

parent = req.param('parent') or null
Route.query 'SELECT * FROM route WHERE parent '+(if not parent then 'is' else '=')+' $1', [parent], (err, routes)->
    console.log(err, routes)
    if err
        return res.json(400, [error: sails.__('Database.connect'), _error: err])
    res.json(routes.rows)

上面我总是传递数据的一些变化总是会出错。

一个简单的解决方法是

parent = req.param('parent') or null
values = []
if(parent)
    values.unshift(parent)
Route.query 'SELECT * FROM route WHERE parent '+(if not parent then 'is NULL' else '= $1'), values, (err, routes)->

这只是一种麻烦。

有没有更好的方法来做到这一点?我必须假设这个原始查询正在制作一个 postgres 准备好的语句,所以也许这就是 postgres 实际处理 null 的方式。我还没有深入研究源代码以了解发生了什么。

4

0 回答 0