我有一个Mongoose模型,如;
var Schema = new Schema({
title: { type: String, required: true },
subtitle: { type: String, required: true },
text: { type: String, required: true },
image: { data: Buffer, contentType: String, name: String, size: Number, encoding: String }
});
我执行了
let projection = "image";
Model.findById(req.params.id,projection, function (err, doc) {
console.log(err);
if (err) {
res.status(422).json(err);
}
else {
res.contentType(doc.image.contentType);
res.send(doc.image.data);
}
});
我收到错误声明无法读取属性,问题是记录中没有存储图像属性。如何忽略这一点,无论图像是否存储都无关紧要。
提前完成。 : - )
答案 0 :(得分:1)
如果doc
为undefined
,您可以检入回调。如果是,则返回其他一些消息/状态,如果不是,则返回图像。
例如:
Model.findById(..., function(err, doc) {
if (err) {...}
else if (doc.image) {<return the image here>}
else {<return a no image found message>}
}
为了更加安全,您应该检查是否首先定义了doc
,因为它可能返回一个空数组/对象,这会导致(doc.image)
检查失败。
答案 1 :(得分:1)
尝试
Model.findById({image:{ $exists: true}}...