是否可以在我的查询中使用自定义属性作为标准



我想知道,是否可以在帆中使用自定义属性来查询某些记录?也许我下面的例子能更好地解释它。

模型/User.js

 attributes: { first_name: 'string', last_name: 'string' }

模型/ModelA.js

 attributes: {
  user: {model: 'User'},
  studentName: function(){ return this.user.first_name + " " this.user.last_name },
  ....
 }
我查询

ModelA.find({studentName: {contains: searchKeyword }}).populate('user').then(console.log);

提前感谢各位。

不,Waterline不会在查询期间计算实例方法。在评估标准时,它也无法访问已填充的模型;即this.user为空。您需要执行没有studentName属性的find,然后自己过滤结果:

ModelA.find().populate('user').exec(function(err, models) {
    models = _.where(models, function(model) {
        return model.studentName().match(searchKeyword);
    }
});

如果这是一个真实的例子,最好搜索User模型,填充ModelA:

User.find(
    {or: [
        {firstName: {contains: searchKeyword}}, 
        {lastName: {contains: searchKeyword}}
    ]}
).populate('modela').exec(...)

相关内容

  • 没有找到相关文章

最新更新