HenrikG HenrikG -4 years ago 322
Node.js Question

Mongoose findById check if property exist

I have a Mongoose model such as;

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 }


I perform a

let projection = "image";
Model.findById(req.params.id,projection, function (err, doc) {
if (err) {
else {

I get the error stating that can not read property and the problem is there is no image property stored in the record. How can I ignore this, it should not matter if an image is stored or not.

Thanx in advance. :-)

Answer Source

You could check in the callback if doc is undefined. If it is, return some other message/status, if it is not, return the image.

For Example:

Model.findById(..., function(err, doc) {
    if (err) {...}
    else if (doc.image) {<return the image here>}
    else {<return a no image found message>}

For even more safety, you should probably check that doc is defined first, since it's possible to return an empty array/object, which would cause the (doc.image) check to fail.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download