无法在mongoose中更新文档

时间:2013-12-04 10:45:39

标签: node.js mongodb save mongoose updates

我不知道为什么我在使用nodejs的mongoose中这样做时会出错。 Mongo不保存对象卖家。

exports.edit = function(req, res) {
    var id = req.param('sellerId');
    Seller.findById(id, function (err,seller) { 
        seller = _.extend(seller, req.body)
        seller.save()
    });
};

这是错误:

  

没有侦测到侦听,投掷。考虑添加一个错误监听器   你的联系。 CastError。转换为ObjectId失败的值...

当我改变这样做时。没有错误发生,但它没有保存卖家的新价值

exports.edit = function(req, res) {
    var id = req.param('sellerId');
    Seller.findById(id, function (err,seller) { 
        seller = _.extend(seller, req.body)
        seller.save(function(err) {
            res.jsonp(seller);
        })
    });
};

当我发表评论时

  

// seller = _.extend(seller,req.body)

。两种方式都不会发生错误。当然,我不编辑任何东西

exports.edit = function(req, res) {
    var id = req.param('sellerId');
    Seller.findById(id, function (err,seller) { 
        //seller = _.extend(seller, req.body)
        seller.save(function(err) {
            res.jsonp(seller);
        })
    });
};

这是卖家架构:

var SellerSchema = new Schema({
    created: {
        type: Date,
        default: Date.now
    },
    description: {
        type: String,
        default: '',
        trim: true
    },
    payment: {
        type: String,
        default: '',
        trim: true
    },
    address: {
        type: String,
        default: '',
        trim: true
    },
    shipping: {
        type: String,
        default: '',
        trim: true
    },
    user: {
       type: Schema.ObjectId,
        ref: 'User'
    },
    product: {
       type: Schema.ObjectId,
        ref: 'Product'
    },
    price: {
       type: Number,
       default: 3000,
       min: 0
    },
});

这是req.body:

 req.body = {
            description: "xxxxxxxx",
            payment: "xxxxxxxxx",
            shipping: "xxxxxxx",
            price: "17",
            address: "xxxxxx"
    };

谢谢!

0 个答案:

没有答案