如何使用 sails.js 创建左连接查询
how create left join query with sails.js
我想在 sails.js 中执行 left 连接查询。我想我应该使用 populate
我有三个模型
caracteristique{
id,
name,
races:{
collection: 'race',
via: 'idcaracteristique',
through: 'racecaracteristique'
},
}
race{
id,
name,
caracteristiques:{
collection: 'caracteristique',
via: 'idrace',
through: 'racecaracteristique'
}
}
RaceCarecteristique{
idrace: {
model:'race'
},
idcaracteristique: {
model: 'caracteristique'
},
bonusracial:{
type: 'number',
}
我的数据是:
Table Caracteristiques
id name
1 | strength
2 | dex
3 | Charisme
Table Race
id name
1 | human
2 | Org
TableRaceCarecteristique
idrace idcaracteristique bonusracial
1 | 2 | +2
这个 sql 请求给我人类,所有特性和如果存在 bonusracial
'SELECT caracteristique.id, caracteristique.name, bonusracial
FROM caracteristique
LEFT OUTER JOIN (select idcaracteristique, bonusracial
from racecaracteristique
where idrace= ) as q
ON q.idcaracteristique = caracteristique.id';
我有这个结果:
caracteristique.id, caracteristique.name, bonusracial
1 | strength | null
2 | dex | 2
3 | Charisme | null
如何使用填充来做到这一点?
当使用 SQL 数据库适配器(MySQL、PQSL 等)时,您可以使用一种方法来执行实际的手写 SQL 语句。当所有其他方法都失败时,这可能是您在框架内找到可接受的解决方案的最佳选择。
.sendNativeQuery()
方法将您的参数化 SQL 语句发送到本机驱动程序,并以原始的、非 ORM 损坏的结果作为响应。结果中会出现实际的数据库架构特定表和列,因此您需要小心更改模型等,因为它们可能会更改后端数据库中的架构。
该方法有两个参数,参数化查询和要插入的值数组。该数组是可选的,如果您在 SQL 语句中没有要替换的参数,则可以省略该数组。
使用上面已经参数化的查询,我正在发送查询以获取下面示例中 "org"(也许是兽人?)的数据。请参阅底部链接的文档。
代码时间:
let query = `
SELECT caracteristique.id, caracteristique.name, bonusracial
FROM caracteristique
LEFT OUTER JOIN (select idcaracteristique, bonusracial
from racecaracteristique
where idrace= ) as q
ON q.idcaracteristique = caracteristique.id`;
var rawResult = await sails.sendNativeQuery(query, [ 2 ]);
console.log(rawResult);
我想在 sails.js 中执行 left 连接查询。我想我应该使用 populate
我有三个模型
caracteristique{
id,
name,
races:{
collection: 'race',
via: 'idcaracteristique',
through: 'racecaracteristique'
},
}
race{
id,
name,
caracteristiques:{
collection: 'caracteristique',
via: 'idrace',
through: 'racecaracteristique'
}
}
RaceCarecteristique{
idrace: {
model:'race'
},
idcaracteristique: {
model: 'caracteristique'
},
bonusracial:{
type: 'number',
}
我的数据是:
Table Caracteristiques
id name
1 | strength
2 | dex
3 | Charisme
Table Race
id name
1 | human
2 | Org
TableRaceCarecteristique
idrace idcaracteristique bonusracial
1 | 2 | +2
这个 sql 请求给我人类,所有特性和如果存在 bonusracial
'SELECT caracteristique.id, caracteristique.name, bonusracial
FROM caracteristique
LEFT OUTER JOIN (select idcaracteristique, bonusracial
from racecaracteristique
where idrace= ) as q
ON q.idcaracteristique = caracteristique.id';
我有这个结果:
caracteristique.id, caracteristique.name, bonusracial
1 | strength | null
2 | dex | 2
3 | Charisme | null
如何使用填充来做到这一点?
当使用 SQL 数据库适配器(MySQL、PQSL 等)时,您可以使用一种方法来执行实际的手写 SQL 语句。当所有其他方法都失败时,这可能是您在框架内找到可接受的解决方案的最佳选择。
.sendNativeQuery()
方法将您的参数化 SQL 语句发送到本机驱动程序,并以原始的、非 ORM 损坏的结果作为响应。结果中会出现实际的数据库架构特定表和列,因此您需要小心更改模型等,因为它们可能会更改后端数据库中的架构。
该方法有两个参数,参数化查询和要插入的值数组。该数组是可选的,如果您在 SQL 语句中没有要替换的参数,则可以省略该数组。
使用上面已经参数化的查询,我正在发送查询以获取下面示例中 "org"(也许是兽人?)的数据。请参阅底部链接的文档。
代码时间:
let query = `
SELECT caracteristique.id, caracteristique.name, bonusracial
FROM caracteristique
LEFT OUTER JOIN (select idcaracteristique, bonusracial
from racecaracteristique
where idrace= ) as q
ON q.idcaracteristique = caracteristique.id`;
var rawResult = await sails.sendNativeQuery(query, [ 2 ]);
console.log(rawResult);