Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在nodejs中使用mongodb write函数返回所有元素,而不是只返回刚刚创建的元素_Node.js_Mongodb_Crud - Fatal编程技术网

Node.js 如何在nodejs中使用mongodb write函数返回所有元素,而不是只返回刚刚创建的元素

Node.js 如何在nodejs中使用mongodb write函数返回所有元素,而不是只返回刚刚创建的元素,node.js,mongodb,crud,Node.js,Mongodb,Crud,我想在crud应用程序中编写函数,它在save元素之后返回所有元素,而不是刚刚创建的元素 我写了这个函数: exports.create = (req, res) => { if (req.body.content) return res.status(400).send({ message: 'Rule content can not be empty' }); const rule = new Rule({ rulename: req.body

我想在crud应用程序中编写函数,它在save元素之后返回所有元素,而不是刚刚创建的元素

我写了这个函数:

exports.create = (req, res) => {
    if (req.body.content)
        return res.status(400).send({ message: 'Rule content can not be empty' });
    
    const rule = new Rule({ rulename: req.body.rulename || 'Empty Rule' });
    rule.save()
        .then(() => {
            Rule.find().then(rules => {
                res.send(rules);
            })
        })
        .catch(err => { res.status(500).send({ message: err.message || 'Some error occured while creating the Rule' }) });
}

我可以工作,但如何改进它?

我建议您使用
async/await
而不是承诺链接方法:

exports.create = async (req, res) => {
    if (!req.body.content)
        return res.status(400).send({ message: 'Rule content can not be empty' });

    const rule = new Rule({ rulename: req.body.rulename || 'Empty Rule' });
    try {
        await rule.save();
        const rules = await Rule.find();
        return res.status(200).send(rules);
    } catch (e) {
        res.status(500).send({ message: err.message || 'Some error occured while creating the Rule' });
    }
}

正如您所知,它不会改变您的代码性能,但它以线性样式而不是承诺链中的嵌套回调函数更具可读性。

您是否面临此代码的任何性能问题?不,我是nodejs新手,我认为它看起来很奇怪