【问题标题】:can i apply OR condition here in mongoose (mongodb)我可以在猫鼬(mongodb)中应用 OR 条件吗
【发布时间】:2021-03-29 17:47:15
【问题描述】:

我想更新任何一个键,但我不知道如何给出 OR 条件是我可以添加 OR 条件以同时更新任何一个键或两个键的任何方式。

const updateBlogs = async (req, res) => {
    const { blogId } = req.params;
    const re = /<("[^"]?"|'[^']?'|[^'">])*>/;

    if (re.test(req.params.blogTitle)) {
        sendError(400, "Unsuccessful", "Blog Title cannot be HTML", req, res);
    } else {
        try {
            let blog = await Blog.updateOne(
                { blogId },
                {
                    $set: {
                        blogTitle: req.body.blogTitle,
                        blogContent: req.body.blogContent,
                    },
                },
                { runValidators: true }
            );
            sendResponse(200, "Successfull", blog, req, res);
        } catch (err) {
            sendError(400, "Blog can't be updated by given id", err, req, res);
        }
    }
};

【问题讨论】:

  • 你说的key是指blogTitleblogContent吗?
  • 是的@MontgomeryWatts

标签: javascript node.js mongodb mongoose mongodb-query


【解决方案1】:

您可以根据req.body 中可用的字段预先构建更新文档。

这是一个例子:

let update = {};
if (req.body.blogTitle) update.blogTitle = req.body.blogTitle;
if (req.body.blogContent) update.blogContent = req.body.blogContent;

let blog = await Blog.updateOne(
    { blogId },
    {
        $set: update,
    },
    { runValidators: true }
);

如您所见,这些字段仅在请求中存在时才被设置,并被传递给更新。请注意,此解决方案假定至少存在一个字段 - 如果将空更新文档传递给 $set,您将收到错误消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-28
    • 2014-03-27
    • 2016-05-09
    • 2012-06-03
    • 2017-10-08
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    相关资源
    最近更新 更多