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 不返回数据的主要内容,如果未能解决你的问题,请参考以下文章