首页 > 解决方案 > 如何从新创建的数据库条目中获取 ID 以进行重定向 - Mongoose

问题描述

在 Node.JS 中使用 MongoDB 和 Mongoose。我正在尝试保存数据库并获取新创建的重定向 ID。我知道 save() 可以将 id 作为回调。但是,我收到错误:SyntaxError: Invalid destructuring assignment target on the argument req.body in the line

Count.save(err, req.body ) => {

完整代码:

// @desc    Process the count form
// @route   POST /session/create
router.post('/session/create', async (req, res) => {
    req.body.user = req.user.id
    await Count.save(err, req.body) => {
        if(err) { 
            next(err); 
        }
        const itemID = req.body._id;
        res.redirect('/new-page' + itemID);
    }
});

Count.create(req.body) 将在数据库中创建条目,但我的理解是它不会返回 id。我不明白为什么 req.body 在一个实例中是一个有效的论点而不是另一个?

标签: node.jsmongodbmongoose

解决方案


想出了答案。必须先创建实例,然后传递信息。下面是工作的 POST 请求,作为奖励,重定向的 GET 请求

// @desc    Process the count form
// @route   POST /session/create
router.post('/create', (req, res) => {
    let session = new Count();
    session.name = req.body.name;
    session.email = req.body.email;
    session.user = req.user.id
    session.save(function (err, start) {
        if(err)
        {console.log(err);
        }
        else {
            console.log(start.id)
        }
    });
    console.log(session.id)
    res.redirect('/session/' + session.id)
});


// @desc    Continuation of session 
// @route   GET /session/:id
router.get('/:id', ensureAuth, (req, res) => {
        res.render('session/add')
});


推荐阅读