Javascript TypeError:在使用mongoose和express创建新文档时,image.save不是一个函数
我正在创建一个新产品,保存后,我继续使用mongooseJavascript 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 {
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()”)所做的那样)。我从来没有任何问题的保存,所以我相信你不会有问题,如果你只使用它。