首页 > 解决方案 > Sequelize 查询回复为:,[object Object]

问题描述

下面的功能工作但没有改变就坏了

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] 奇怪的是它总是返回正确的东西,但现在它没有

有效的东西

查询有效(代码中未显示)数据库连接在那里它以前有效...

标签: node.jssequelize.js

解决方案


Sequelize 文档的片段:

默认情况下,该函数将返回两个参数 - 一个结果数组和一个包含元数据的对象(例如受影响的行数等)。请注意,由于这是一个原始查询,因此元数据是特定方言的。一些方言返回结果对象“内”的元数据(作为数组上的属性)。但是,总是会返回两个参数,但对于 MSSQL 和 MySQL,它将是对同一对象的两个引用。

因此,这将稍微取决于您选择的基础数据库,但您更有可能想要返回queryReply[0]而不是queryReply.

此外,我注意到您正在这样做:

console.log("This is the query: " + queryReply)

这将尝试将 queryReply 呈现为字符串,但事实并非如此,因为它是一个对象。相反,您可能会发现使用以下命令进行调试更容易:

console.log("This is the query: ", queryReply)

推荐阅读