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

#javascript #node.js #orm #adonis.js

#javascript #node.js #orm #adonis.js

Вопрос:

Я новичок в 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    
})
  

Комментарии:

1. Это решило проблему, спасибо, просто примечание, нужно добавить async для функции, в которой мы используем await

2. Кстати, вы можете использовать ярлык для своего запроса: let data = await User.find(1) @AkshayKhale

Ответ №2:

Очень легко пропустить «await», когда вы начинаете работать с фреймворками с асинхронным ожиданием. Просто предложение по запросу всякий раз, когда вы хотите найти один объект, рекомендуется использовать предопределенную функцию ORM. В этом случае

const user = ожидает пользователя.findBy(‘id’,1)

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