Javascript TypeError:在使用mongoose和express创建新文档时,image.save不是一个函数

Javascript TypeError:在使用mongoose和express创建新文档时,image.save不是一个函数,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,我正在创建一个新产品,保存后,我继续使用mongoosefindById搜索它,然后尝试创建另一个文档“Image”,该文档在产品架构中引用。当我执行代码时,它会给我TypeError:image.save不是一个函数。我该如何解决这个问题 Product.create(req.body.product, function(err, product) { if (err) { console.log(err); } else {

我正在创建一个新产品,保存后,我继续使用mongoose
findById
搜索它,然后尝试创建另一个文档“Image”,该文档在产品架构中引用。当我执行代码时,它会给我
TypeError:image.save不是一个函数
。我该如何解决这个问题

Product.create(req.body.product, function(err, product) {
        if (err) {
            console.log(err);
        } else {
            product.save();
            Product.findById(product._id, function(err, foundProduct) {
                if (err) {
                    req.flash('error', err.message);
                    res.redirect('/product');
                } else {
                    Image.create(req.files, function(err, image) {
                        if (err) {
                            req.flash('error', err.message);
                            res.redirect('/product');
                        } else {
                            image.save();
                            foundProduct.images.push(image);
                            foundProduct.save();
                            res.redirect('/product/' + product._id);
                        }
                    });
                }
            });
        }
    });
这是我的模式:

var productSchema = new mongoose.Schema({
    name: String,
    price: String,
    description: String,
    gender: String,
    images: [{
        type: mongoose.Schema.Types.ObjectId,
        ref: "Image"
    }],
    sizes: {
        ch: Number,
        m: Number,
        g: Number,
        eg: Number
    },
    type: String,
    likes: Number, default: 0
});


var imageSchema = new mongoose.Schema({
    public_id: String,
    url: String,
    secure_url: String,
    resource_type: String,
    format: String,
    bytes: String
});

您不应该将图像声明为架构ImageSchema的新对象吗?在我看来,您并没有创建对象

在您的功能中,我将执行以下操作:

const im = new Image();
im.url = ...
然后我会调用save函数

im.save().then((data,error) => {...})

谢谢你帮了我大忙!关于.create方法在这种情况下不起作用的原因有什么建议吗?我在代码的其他部分工作得很有魅力。老实说,我从来没有用过这个。创建函数。.save函数一直是我将文档保存到db的主要方式。但是,我在网上查了一下,似乎这个create是一个更通用的保存对象的函数(不一定是模型的实例)。在.save中时,需要实例化对象(就像我对“new Image()”)所做的那样)。我从来没有任何问题的保存,所以我相信你不会有问题,如果你只使用它。