Adonis Lucid ORM не возвращает данные

Я новичок в Adonis JS, поэтому мне очень жаль глупого вопроса.

У меня есть настройки по умолчанию Adonis JS с базой данных Mysql и все работает.

Я создал простой пользовательский маршрут, в котором я возвращаю JSON пользователя с идентификатором: 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) но это не сработало.

Пожалуйста, помогите мне.

Заранее спасибо!!!

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-await. Просто предложение по запросу всякий раз, когда вы хотите найти один объект, рекомендуется использовать предопределенную функцию ORM. В этом случае

const user = ожидание User.findBy('идентификатор',1)

это вернет первый найденный объект с заданным идентификатором. Дополнительные параметры и помощь можно найти в документации knex.js http://knexjs.org/

Другие вопросы по тегам