#node.js #sequelize.js
#node.js #sequelize.js
Вопрос:
Приведенная ниже функция работала, но сломалась без изменений
exports.updateFormState = async() => {
let queryReply;
try {
queryReply = await db.sequelize.query(
"SELECT * FROM stackoverflow"
);
console.log("Im passed the reply")
console.log("This is the query: " queryReply)
if (queryReply[1] === 1) {
console.log("Inside if statement")
return "SUCCESS";
}
}catch(err) {
return err.message;
}
}
Что он должен делать
Он должен запустить запрос к базе данных и вернуть результаты.
Что он делает
Он возвращает,[object Object] Странно то, что он всегда возвращал правильную вещь, но теперь это не так
Вещи, которые работают
Запрос работает (не показан в коде) Соединение с базой данных существует, оно работало раньше…
Комментарии:
1. измените значение
console.log("This is the query: " queryReply)
наconsole.log("This is the query: " , queryReply)
Ответ №1:
Фрагмент из документов Sequelize:
По умолчанию функция вернет два аргумента — массив результатов и объект, содержащий метаданные (например, количество затронутых строк и т. Д.). Обратите внимание, что, поскольку это необработанный запрос, метаданные зависят от диалекта. Некоторые диалекты возвращают метаданные «внутри» объекта результатов (как свойства в массиве). Однако всегда будут возвращены два аргумента, но для MSSQL и MySQL это будут две ссылки на один и тот же объект.
Итак, это будет немного зависеть от выбранной вами базовой базы данных, но вы, скорее всего, захотите вернуть queryReply[0]
, а не queryReply
.
Кроме того, я отмечаю, что вы делаете это:
console.log("This is the query: " queryReply)
Это попытается отобразить queryReply в виде строки, которой она не является, поскольку это объект. Вместо этого вам может быть проще отлаживать с помощью:
console.log("This is the query: ", queryReply)
Комментарии:
1. Это действительно работает, спасибо. Но я использовал
console.log("This is the query: " queryReply)
это раньше, и это сработало. Знаете ли вы, почему?2. Я бы предположил, что ваша среда недавно обновилась с предыдущей версии Sequelize до версии v2 или более поздней. Пожалуйста, ознакомьтесь с списком изменений и ознакомьтесь с примечаниями к версии v2.0.0, когда . функция query() была изменена, чтобы возвращать два параметра. 🙂 Счастливого взлома.