Adonis Lucid ORM 不返回数据

Posted

技术标签:

【中文标题】Adonis Lucid ORM 不返回数据【英文标题】:Adonis Lucid ORM Not Returning data 【发布时间】:2019-03-09 13:06:01 【问题描述】:

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

请帮帮我。

提前致谢!!!

【问题讨论】:

【参考方案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的功能需要添加async 顺便说一下,您可以使用快捷方式进行查询:let data = await User.find(1)@AkshayKhale【参考方案2】:

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

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

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

中找到更多选项和帮助

【讨论】:

以上是关于Adonis Lucid ORM 不返回数据的主要内容,如果未能解决你的问题,请参考以下文章

使用 ORM 在 adonis JS 中选择特定列

将现有数据库与 AdonisJS 一起使用

12)django-ORM(单表返回数据3种方式)

Laravel 的 ORM 返回的数据类型小结

Kohana ORM 不返回新添加记录的主键

Django ORM注释Sum计算错误及其乘以条目数,它是有线的