Как в nodejs с функцией записи mongodb вернуть все элементы, а не только что созданные - PullRequest
1 голос
/ 02 августа 2020

Я хочу написать функцию в приложении crud, которая после сохранения элемента возвращает все элементы, а не только что созданные.

Я написал эту функцию:

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' }) });
}

Я работаю, но как Я его улучшаю?

1 Ответ

1 голос
/ 02 августа 2020

Я бы порекомендовал вам использовать 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' });
    }
}

Как вы знаете, это не влияет на производительность вашего кода, но более читабельно в линейном стиле вместо вложенного функции обратного вызова в цепочке обещаний.

...