Morgan Touverey Quilling
Morgan Touverey Quilling

Reputation: 4343

Reference not populated

In a User schema, I have a simple reference to a Customer schema.

const UserSchema = new Schema({
  customer: { type: Schema.Types.ObjectId, ref: Customer }, // Customer is the compiled CustomerSchema
  ...
});

const CustomerSchema = new Schema({
  name: String,
  ...
});

In an Express controller, I'm fetching an user and I'm trying to embed the customer in the returned JSON:

export function me(req, res, next) {
  User
    .findOne({ _id: req.user._id }, '-salt -hashedPassword')
    .populate('customer')
    .exec((err, user) => {
      if(err) return next(err);
      if(!user) return res.json(401);
      res.json(user);
    });
}

But in the response, customer is null.

The test data I use:

A user document:

{
    "_id" : ObjectId("570d1f0938f7da5151b815d2"),
    "customer" : ObjectId("570d1f0838f7da5151b815d0"),
    ...
}

The related customer document:

{
    "_id" : ObjectId("570d1f0838f7da5151b815d0"),
    ...
}

Probably a noob question, but I don't see what I don't see what I could forget =)

Upvotes: 0

Views: 32

Answers (1)

Komo
Komo

Reputation: 2138

I think ref must be a string:

customer: { type: Schema.Types.ObjectId, ref: 'Customer' },

Upvotes: 2

Related Questions