Akshay Khale
Akshay Khale

Reputation: 8361

Adonis Lucid ORM Not Returning data

I am new to Adonis JS so extremely sorry for the Stupid Question.

I have the default setup of Adonis JS with Mysql Database and everything working.

I have created a simple usertest route where I am returning JSON of user with ID: 1.

Below is the code for the same

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

But it is returning and empty object

Raw Response:

{}

Console Log Statement Response:

Promise { <pending> }

I am unable to understand what am I missing here.

Note: I tried let data = User.find(1) but it did not work.

Please help me.

Thanks in advance!!!

Upvotes: 2

Views: 2030

Answers (2)

Sagar Chauhan
Sagar Chauhan

Reputation: 111

It is very easy to miss "await" when you start working with async-await frameworks. Just a suggestion on the query whenever you want to find one object it is good practice to use ORM's predefined function. In this case

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

this will return the first object it finds with the given id. You will find more options and help in knex.js docs http://knexjs.org/#Builder-where

Upvotes: 2

Billal BEGUERADJ
Billal BEGUERADJ

Reputation: 22804

Quick note, at least you have to execute the query asynchronously.

I mean, you have to replace:

let data = User.query().where('id', 1)
    .first()

by:

let data = await User.query().where('id', 1)
    .first()

Of course, this mean you have to precede the function arrow with async:

Route.get('/usertest', async ({ response }) => {  
  // rest of the code
  let data = await User.query().where('id', 1).first()
  // rest of the code    
})

Upvotes: 2

Related Questions