我是Adonis JS的新手,对这个愚蠢的问题感到非常抱歉。
我有默认设置的Adonis JS与Mysql数据库和一切工作。
我已经创建了一个简单的usertest路由,其中返回ID为1的用户的JSON。
下面是相同的代码
Route.get('/usertest', ({ response }) => {
const User = use('App/Models/User')
let data = User.query().where('id', 1)
.first()
console.log(data)
return response.status(200).json(data)
})但它返回的是空对象
原始响应:
{}控制台日志语句响应:
Promise { <pending> }我不能理解我在这里错过了什么。
注意:我尝试过let data = User.find(1),但它不起作用。
请帮帮我。
提前感谢!
发布于 2019-03-09 21:40:20
快速注意,至少您必须异步执行查询。
我的意思是,你必须替换:
let data = User.query().where('id', 1)
.first()出自:
let data = await User.query().where('id', 1)
.first()当然,这意味着您必须在函数箭头前面加上async
Route.get('/usertest', async ({ response }) => {
// rest of the code
let data = await User.query().where('id', 1).first()
// rest of the code
})发布于 2019-11-02 03:13:29
当你开始使用async-await框架时,很容易错过"await“。这只是对查询的一个建议,当您想要查找一个对象时,使用ORM的预定义函数是一个很好的实践。在这种情况下
常量用户=等待User.findBy('id',1)
这将返回它找到的具有给定id的第一个对象。您可以在knex.js docs http://knexjs.org/#Builder-where中找到更多选项和帮助
https://stackoverflow.com/questions/55077645
复制相似问题