Ответ на запрос продолжения: , [объект Object]

#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() была изменена, чтобы возвращать два параметра. 🙂 Счастливого взлома.