Sequelize.js 在sequelize中使用Op.contain进行查询时出错。

Sequelize.js 在sequelize中使用Op.contain进行查询时出错。,sequelize.js,Sequelize.js,所以我在做一个学习项目。我得到以下错误 Unhandled rejection SequelizeDatabaseError: SQLITE_ERROR: unrecognized token: "@" at Query.formatError (/mnt/c/Users/Mike/websites/Treehouse-FSJS-Project-10/node_modules/sequelize/lib/dialects/sqlite/query.js:423:16) at af

所以我在做一个学习项目。我得到以下错误

Unhandled rejection SequelizeDatabaseError: SQLITE_ERROR: unrecognized token: "@"
    at Query.formatError (/mnt/c/Users/Mike/websites/Treehouse-FSJS-Project-10/node_modules/sequelize/lib/dialects/sqlite/query.js:423:16)
    at afterExecute (/mnt/c/Users/Mike/websites/Treehouse-FSJS-Project-10/node_modules/sequelize/lib/dialects/sqlite/query.js:119:32)
    at replacement (/mnt/c/Users/Mike/websites/Treehouse-FSJS-Project-10/node_modules/sqlite3/lib/trace.js:19:31)
    at Statement.errBack (/mnt/c/Users/Mike/websites/Treehouse-FSJS-Project-10/node_modules/sqlite3/lib/sqlite3.js:16:21)
下面是我的查询代码

router.get('/book_detail/:id', (req, res, next) => {
    books
        .findAll({
            where: {
                id: req.params.id,
            },
            include: [
                {
                    model: loans,
                },
            ],
        })
        .then(book => {
            const patronList = []
            const loans = []
            book[0].dataValues.loans.map(patrons => {
                patronList.push(patrons.dataValues.patron_id)
                loans.push(patrons.dataValues)
                console.log(loans)
            })

            patrons
                .findAll({
                    where: {
                        id: {
                            [Op.contains]: patronList,
                        },
                    },
                })
                .then(patron => {
                    // console.log(patronList)
                    console.log(patron)
                    res.render('book_detail', { book, loans })
                })
        })
})
我应该能看到借出这本书的顾客。我得到了正确的id,正如您在下面的查询中看到的

Executing (default): SELECT `id`, `first_name`, `last_name`, `address`, `email`, `library_id`, `zip_code` FROM `patrons` AS `patrons` WHERE `patrons`.`id` @> 1, 3;

这似乎与Op.contains有关,但我想我不明白这为什么不能正常工作。任何帮助都将不胜感激

您可以更改以下查询:

where: {
    id: {
        [Op.contains]: patronList,
    },
},

因为我看不到这里的
contains
的任何用法

[Op.contains]:[1,2]/@>[1,2](PG数组包含运算符)

您可以将其用于json数组类型的字段,但在您的示例中是 类似于表的主键


您可以更改以下查询:

where: {
    id: {
        [Op.contains]: patronList,
    },
},

因为我看不到这里的
contains
的任何用法

[Op.contains]:[1,2]/@>[1,2](PG数组包含运算符)

您可以将其用于json数组类型的字段,但在您的示例中是 类似于表的主键


好的,这是有道理的。我不确定它是否会接受数组。非常感谢。好的,这很有意义。我不确定它是否会接受数组。非常感谢。