在Adonis.js中,可以使用where
子句来过滤查询结果。如果where
子句不起作用并且始终返回0,可能有几个原因导致:
数据库连接问题:确保数据库连接正确设置,并且可以正常连接到数据库。
错误的查询语法:确保使用正确的查询语法。Adonis.js使用的查询构造器是Knex.js,可以参考Knex.js的文档了解正确的查询语法。下面是一个示例:
const Database = use('Database')
async function getUsers() {
const users = await Database.table('users').where('age', '>', 18)
return users
}
在上面的示例中,我们使用where
子句过滤年龄大于18的用户。
数据库中没有匹配的记录:如果数据库中没有符合查询条件的记录,where
子句将返回空数组或空对象。在这种情况下,可能需要检查数据库中的数据是否与查询条件匹配。
数据类型不匹配:确保在where
子句中使用正确的数据类型。例如,如果在数据库中使用整数类型存储年龄,那么在查询语句中应该使用整数而不是字符串。
如果上述解决方法都不起作用,可以尝试打印出具体的查询语句,以便更好地调试问题。可以使用toSQL
函数来打印查询语句,例如:
const Database = use('Database')
async function getUsers() {
const query = Database.table('users').where('age', '>', 18)
console.log(query.toSQL())
const users = await query
return users
}
这将打印出生成的SQL查询语句,以便检查是否正确。