【问题标题】:how to use join to join two table in sails如何使用 join 来连接 Sails 中的两个表
【发布时间】:2017-05-13 17:35:05
【问题描述】:

我知道在sails 中我可以使用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 是一个对象,我不喜欢那样。我想要返回结果是这样的:

[{
    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
}]

(都是财产)。所以我认为在这种情况下我需要加入。怎么加入?

【问题讨论】:

  • 您的预期结果对象有重复的键。那怎么应该是 JS 对象或 JSON?
  • @Sangharsh 我会在加入时重命名

标签: sails.js


【解决方案1】:

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

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

【讨论】:

  • 我想我会创建视图然后
  • 是的,这是一个不错的选择,然后您可以在 Sails 中为 DB 视图创建一个模型,而不再需要嵌套 JSON。
猜你喜欢
  • 2020-04-19
  • 1970-01-01
  • 2015-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-10
相关资源
最近更新 更多