22

複数の条件でテーブルをクエリするにはどうすればよいですか? 両方が機能する例を次に示します。

Post.findAll({ where: ['deletedAt IS NULL'] }).success()

Post.findAll({ where: {topicId: req.params.id} }).success()

次に、条件を組み合わせる必要がある場合は、次のようなことをする必要があると感じています

Post.findAll({ where: [{topicId: req.params.id}, 'deletedAt IS NULL'] }).success()

、しかし、それは動作しません。
続編が待機する構文は何ですか?

ノードデバッグは言う:

デバッグ: TypeError: オブジェクト # にメソッド 'replace' がありません

それが問題なら...

4

5 に答える 5

26

できるよ:

Post.findAll({ where: {deletedAt: null, topicId: req.params.id} })

どちらに翻訳されますかdeletedAt IS NULL

ところで、必要な場合は、次deletedAt NOT IS NULLを使用します。

Post.findAll({ where: {deletedAt: {$ne: null}, topicId: req.params.id} })
于 2014-07-15T11:01:24.687 に答える
10

ただ行う:

Post.findAll(
    { where: ["topicId = ? AND deletedAt IS NULL", req.params.id] }
).success()

それとも or クエリが必要ですか?

于 2012-05-31T20:46:22.703 に答える
5

これは私に与えます SELECT `id`, `title`, `description`, `test`, `published`, `createdAt`, `updatedAt` FROM `tests` AS `test` WHERE (`test`.`title` LIKE '%3%' OR `test`.`description` LIKE '%2%');

exports.findAll = (req, res) => {
    const title = req.query.title;
    const description = req.query.description;
    Tutorial.findAll({
            where: {
                [Op.or]: [{
                        title: {
                            [Op.like]: `%${title}%`
                        }
                    },
                    {
                        description: {
                            [Op.like]: `%${description}%`
                        }
                    }
                ]
            }
        })
        .then(data => {
            res.send(data);
        })
        .catch(err => {
            res.status(500).send({
                message: err.message || "Some error occurred while retrieving tutorials."
            });
        });

};
于 2020-04-14T21:49:20.857 に答える