Savior Nguyen
Savior Nguyen

Reputation: 87

Sails js one to one populate conditions not working?

I'm newbie of Sails and I've got a problem with one to one association. First, I have model User:

module.exports = {
  schema: true,
  identity : "User",
  tableName: "user",
  attributes: {
    email: {
      type: 'email',
      unique: true,
      required: true
    },

    password: {
      type: 'string'
    },

    salt: {
      type: 'string'
    },

    merchant: {
      model: 'merchant',
      defaultsTo: null
    },

    removed: {
      type: 'boolean',
      required: true,
      defaultsTo: false
    }
  }
}

And my Merchant model:

module.exports = {
  schema: true,
  identity : "Merchant",
  tableName: "merchant",
  attributes: {
    name: {
      type: 'string',
      unique: true,
      required: true
    },

    code: {
      type: 'string',
      unique: true,
      required: true
    },

    security_key: {
      type: 'string',
      required: true
    },

    active: {
      type: 'boolean',
      defaultsTo: false,
      required: true
    },

    user: {
      model: 'user'
    }
  }
}

So when I need to find records where merchant.active = true, I write this query:

var findUser = User.find(query).populate('merchant', {active: true});
return findUser;

But it was not working at all.

Anyone any ideas to solve this properly?

P.S. my Sails version is: 0.11.1. My DB is MongoDB

Upvotes: 2

Views: 1226

Answers (1)

Eugene Obrezkov
Eugene Obrezkov

Reputation: 2986

First of all, remove defaultsTo from your association attributes. I don't like this :) I don't know if it makes the problem, but in documentation I never see this.

Also you need to execute your query, not just return it. If I take your models' declarations then I can write populate query like this.

var findUser = User.find(query).populate('merchant', {active: true});

findUser.then(function(user) {
  console.log('Your user is ' + user);
}).catch(function(error) {
  console.log('Your error is ' + error);
});

Upvotes: 1

Related Questions