我是新手,我对一对一的关系有问题。
首先,我有一个模型用户:

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

我的商业模式是:
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'
    }
  }
}

因此,当我需要查找merchant.active = true的记录时,我会编写以下查询:
var findUser = User.find(query).populate('merchant', {active: true});
return findUser;

但根本不起作用。
有什么办法能解决这个问题吗?
我的帆版本是:0.11.1。我的数据库是MongoDB

最佳答案

首先,从关联属性中删除defaultsTo。我不喜欢这样:)我不知道这是否会造成问题,但在文档中我从来没有看到过。
此外,还需要执行查询,而不仅仅是返回查询。如果我接受您的模型声明,那么我可以这样编写填充查询。

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);
});

关于node.js - 帆js一对一填充条件不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32507911/

10-11 21:43