Mongoose保存请求正文中的所有参数

zup*_*evf 9 javascript mongoose mongodb node.js express

我正在设置一个小API,我在我的应用程序的客户端进行了一些数据验证,而我这样做是为了构建我的数据以匹配我的mongoose模式.

我正试图这样做......

router.route('/car')
.post(function(req, res) {
    var car = new Car();

    car = req.body; // line under scrutiny

    car.save(function(err) {
        if(err) {
            console.log(err);
            res.status(400);
            res.send(err);
        }
        else {
            res.status(200);
            res.json({
                message: req.body.name + ' successfully registered!'
            });
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

但是当然,这正在删除carmongoose提供的所有模型参数,因此save方法等不再起作用.

我曾经尝试过car.data = req.body但这需要将我所有的猫鼬模式包裹在一个data不那么优雅的物体中.

我想知道是否有任何方法可以避免在car没有长手的情况下准备保存对象;

car.name = req.body.name;
car.seats = req.body.seats;
car.engine_size = req.body.engine_size; 
Run Code Online (Sandbox Code Playgroud)

等等

我基本上想要做同样的事情car.push(req.body);但是这个.push()方法不适用于猫鼬模型.

小智 14

你可以通过req.bodyCar喜欢这个

var car = new Car(req.body);
Run Code Online (Sandbox Code Playgroud)

这里也是一个参考:将 模型参数传递给猫鼬模型