javascript асинхронная проблема с objection.js - PullRequest
0 голосов
/ 02 октября 2018

ОК, я использую Objection.js для обработки некоторых компонентов базы данных с помощью node.js
Я знаю, что ошибка, которую я получаю, является обычной для того, кто изучает, как использовать асинхронные функции, но я просто не могу этого понятьработать правильно.Моя асинхронная функция возвращает что-то до того, как завершает запрос (я думаю)

async function getStatusSensor() {
const sensors = await StatusSensor.query()
.select('*').limit(1)
var sensor = sensors[0]
console.log(sensor.monitor + " from function")
console.log(sensor.status_type + " from function")
return sensor;
}

const sensor = getStatusSensor()
console.log(sensor.monitor)
console.log(sensor.status_type)

, и результаты, которые я получаю, выглядят так:

undefined
undefined
3957b from function
20GPSChadsCtrl from function

, так что я могу работать только свернул строку в функции, которая его запрашивала.Что мне нужно, так это простая асинхронная функция, которую я могу вызвать, просто чтобы получить конкретную строку из базы данных.спасибо за любую помощь!

1 Ответ

0 голосов
/ 02 октября 2018

Поскольку getStatusSensor помечено async, оно вернет обещание, которое вам нужно дождаться, чтобы получить разрешение, прежде чем вы сможете использовать результат.

Любой из этих вариантов (если вы вызываете егоиз другая async функция):

const sensor = await getStatusSensor();

Или как это так:

getStatusSensor().then(sensor => {
  console.log(sensor.monitor)
  console.log(sensor.status_type)
});
...