Adonis Lucid ORM 不返回数据

Adonis Lucid ORM Not Returning data

我是 Adonis JS 的新手,对这个愚蠢的问题深表歉意。

我有 Adonis JS 的默认设置,Mysql 数据库和一切正常。

我创建了一个简单的 usertest 路由,我返回 JSON ID 为 1 的用户。

下面是相同的代码

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) 但没有成功。

请帮助我。

提前致谢!!!

快速说明,至少您必须异步执行查询。

我的意思是,你必须更换:

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    
})

当您开始使用异步等待框架时,很容易错过 "await"。每当您想查找一个对象时,只是对查询的一个建议,使用 ORM 的预定义函数是一种很好的做法。在这种情况下

const user = await User.findBy('id',1)

这将 return 它找到的第一个具有给定 ID 的对象。您将在 knex.js 文档 http://knexjs.org/#Builder-where

中找到更多选项和帮助