如何使用join在sails中连接两个表

时间:2017-05-13 17:35:06

标签: sails.js

我知道在帆中我可以使用populate加入两个模型,例如此链接中的描述Sails model and orm 例如,我有2个模型:

// myApp/api/models/Pet.js
module.exports = {
  attributes: {
    name: {
      type: 'string'
    },
    color: {
      type: 'string'
    }
  }
}

// myApp/api/models/User.js
module.exports = {
  attributes: {
    name: {
      type: 'string'
    },
    age: {
      type: 'integer'
    },
    pony:{
      model: 'pet'
    }
  }
}

然后

User.find({ name:'Mike' })
.populate('pony')
.exec(function(err, users) {}

将返回类似

的结果
 [{ 
  name: 'Mike',
  age: 21,
  pony: { 
    name: 'Pinkie Pie',
    color: 'pink',
    id: 5,
    createdAt: Tue Feb 11 2014 15:45:33 GMT-0600 (CST),
    updatedAt: Tue Feb 11 2014 15:45:33 GMT-0600 (CST) 
  },
  createdAt: Tue Feb 11 2014 15:48:53 GMT-0600 (CST),
  updatedAt: Tue Feb 11 2014 15:48:53 GMT-0600 (CST),
  id: 1 
 }]

在这里 pony 是一个对象,我不喜欢这样。我想要返回rerult这样的东西:

[{
    name: 'Mike',
    age: 21,
    name: 'Pinkie Pie',
    color: 'pink',
    id: 5,
    createdAt: Tue Feb 11 2014 15:45:33 GMT - 0600 (CST),
    updatedAt: Tue Feb 11 2014 15:45:33 GMT - 0600 (CST)
    createdAt: Tue Feb 11 2014 15:48:53 GMT - 0600 (CST),
    updatedAt: Tue Feb 11 2014 15:48:53 GMT - 0600 (CST),
    id: 1
}]

(所有这些都是财产)。所以我想在这种情况下我需要加入。我怎么能加入?

1 个答案:

答案 0 :(得分:2)

此问题已涵盖here。答案演示了在Sails for NoSQL DB中使用.populate()和在SQL DB中使用.query()。

另一个选项,如果您使用的是像MySQL这样的SQL数据库,这是一个经常运行的查询,就是在数据库级别创建一个视图。您可以在MySql Documentation中找到有关创建视图的更多信息。