javascript - 避免在结果中获取 id 数组(mssql - node.js)
问题描述
我最近开始使用 mssql (SQLServer) 而不是 MySQL。所以我更新了我的路线以使用 mssql。
但是我遇到了一个问题:例如,当我使用连接时,有 2 个具有“Id”列的表,我得到了一个 Id 数组而不是单个 Id。(两个id都一样)
是否有可能只获得一个 id 而不是一个数组?先感谢您 !
const query = 'SELECT sessions.*, chiffres.*, participants.*\
FROM dbo.sessions\
INNER JOIN dbo.participants ON participants.id = sessions.id\
INNER JOIN dbo.chiffres ON chiffres.id = participants.id'
return ps.prepare(query, err => {
if (err) {
return res.json({ errors: { sql: err } })
}
return ps.execute(optsValues, (err, results) => {
if (err) {
return res.json({ errors: { sql: err } })
}
return ps.unprepare(err => {
if (err) {
return res.json({ errors: { sql: err } })
}
return res.json({ sessions: results?.recordset })
})
})
})
结果.记录集 =>
[
{
"id": [2, 2, 2],
"num_session": "blabla"
...
}
]
解决方案
我对javascript不太熟悉,但是由于每个表中的COLUMN名称完全相同,并且您没有为列起别名,那么您希望客户端如何将它们分开?
在您的查询中使用 table.* 通常是不好的做法,因为表结构可能会随着时间而改变,并且您的代码不会立即出错并且可能会对下游产生不利影响。始终具体说明您要选择的列。
尝试这样的查询:
const query = 'SELECT sessions.id as SessionID, sessions.num_session, chiffres.id as ChiffresID, chiffres.ca, participants.id as ParticipantID, participants.name\
FROM dbo.sessions\
INNER JOIN dbo.participants ON participants.id = sessions.id\
INNER JOIN dbo.chiffres ON chiffres.id = participants.id'
推荐阅读
- r - 正则表达式捕获 1 个字符
- c# - Python 中 C# 的 GetEncoding("28591") 等价物是什么?
- c++ - boost::hana: 为什么我不能过滤一个集合?
- angular - Ionic 4 / Angular 6:选项卡中的嵌套子路由
- android - Flutter - 在地图中打开位置
- php - BadMethodCallException 调用未定义的方法 App\registeration::register() 错误
- c# - UI不更新在foreach循环C#WPF中首先播放的声音
- javascript - 反应路由器问题在需要时获取数据
- apache-flex - Flash Builder:调试与发布差异?
- javascript - 从不同范围访问函数 - 原生 js