【问题标题】:Adonis Lucid ORM Not Returning dataAdonis Lucid ORM 不返回数据
【发布时间】: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),但没有成功。

请帮帮我。

提前致谢!!!

【问题讨论】:

    标签: javascript node.js orm adonis.js


    【解决方案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

    中找到更多选项和帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多