Mongoose findById检查属性是否存在

时间:2016-08-24 13:56:22

标签: node.js mongoose

我有一个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);
  }
});

我收到错误声明无法读取属性,问题是记录中没有存储图像属性。如何忽略这一点,无论图像是否存储都无关紧要。

提前完成。 : - )

2 个答案:

答案 0 :(得分:1)

如果docundefined,您可以检入回调。如果是,则返回其他一些消息/状态,如果不是,则返回图像。

例如:

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}}...