MySQL8.0 xdevapi node.js 没有 return 键,只有值
MySQL8.0 xdevapi node.js doesn't return keys, only values
在 node.js 服务器上使用 MySQL 8.0 (X DevAPI),我正在尝试使用
获取数据
var res = session.sql('SELECT * FROM users').execute(function (row) {
console.log(row); // [1,'foo','bar']
});
但这returns只是一个值数组。列名称丢失。有没有一种方法可以获得像经典 SQL 数据集中那样的键值对?
即id: 1, fName: 'foo', lName: 'bar'
现在您必须使用 execute()
上的 column metadata available through a second callback 参数构建键值对结构 "by hand"。
像下面这样的东西就可以了:
var result = []
session.sql('SELECT 1 AS id, "foo" AS fName, "bar" AS lName')
.execute(row => {
row.forEach((value, i) => { result[i] = Object.assign({}, result[i], { value }) })
}, columns => {
columns.forEach((key, i) => { result[i] = Object.assign({}, result[i], { key: key.getColumnName() }) })
})
console.log(result.reduce((res, pair) => Object.assign(res, { [pair.key]: pair.value }), {}))
我不得不承认这是令人费解的,让它变得更好已经在雷达上了。
免责声明:我是 X DevAPI 连接器的开发负责人。
在查询中使用 JSON_OBJECT 函数。
var res = session.sql("select JSON_OBJECT('id', id, 'name', name) from users").execute(function (row) {
console.log(row); // {"id": 87, "name": "rui"}
});
这是一个解决方法,可能会对某人有所帮助。
//This is declared outside of class
const mapTest = (row) =>{
return{
id:row[0],
price:row[1]
}
}
//This where you get the result.
.execute()
.then(myResult =>{
let myRows = myResult.fetchAll();
resolve(myRows.map(row=>mapTest(row))); // returns {"id":1,"price":200000},{"id":2,"price":300000}
})
在 node.js 服务器上使用 MySQL 8.0 (X DevAPI),我正在尝试使用
获取数据var res = session.sql('SELECT * FROM users').execute(function (row) {
console.log(row); // [1,'foo','bar']
});
但这returns只是一个值数组。列名称丢失。有没有一种方法可以获得像经典 SQL 数据集中那样的键值对?
即id: 1, fName: 'foo', lName: 'bar'
现在您必须使用 execute()
上的 column metadata available through a second callback 参数构建键值对结构 "by hand"。
像下面这样的东西就可以了:
var result = []
session.sql('SELECT 1 AS id, "foo" AS fName, "bar" AS lName')
.execute(row => {
row.forEach((value, i) => { result[i] = Object.assign({}, result[i], { value }) })
}, columns => {
columns.forEach((key, i) => { result[i] = Object.assign({}, result[i], { key: key.getColumnName() }) })
})
console.log(result.reduce((res, pair) => Object.assign(res, { [pair.key]: pair.value }), {}))
我不得不承认这是令人费解的,让它变得更好已经在雷达上了。
免责声明:我是 X DevAPI 连接器的开发负责人。
在查询中使用 JSON_OBJECT 函数。
var res = session.sql("select JSON_OBJECT('id', id, 'name', name) from users").execute(function (row) {
console.log(row); // {"id": 87, "name": "rui"}
});
这是一个解决方法,可能会对某人有所帮助。
//This is declared outside of class
const mapTest = (row) =>{
return{
id:row[0],
price:row[1]
}
}
//This where you get the result.
.execute()
.then(myResult =>{
let myRows = myResult.fetchAll();
resolve(myRows.map(row=>mapTest(row))); // returns {"id":1,"price":200000},{"id":2,"price":300000}
})