我正在使用NodeJs和Mysql构建Restful API,并尝试使用inner将结果从返回到表,但现在我返回整个"returns“对象,我想返回数组中的数组,就像返回noSql数据库的简单json对象一样。
当前
[
{
coluna1: 'AAAAA',
coluna2: 'XXXXX'
},{
coluna1: 'AAAAA',
coluna2: 'YYYYY'
},{
coluna1: 'BBBBB',
coluna2: 'ZZZZZ'
},
]
所需的
[
{
coluna1: 'AAAAA',
outra_arary: [
{
coluna2: 'XXXXX'
},{
coluna2: 'YYYYY'
}
]
},{
coluna1: 'BBBBB',
outra_arary: [
{
coluna2: 'ZZZZZ'
}
]
}
]
这是我如何构建方法的一个示例:
router.get('/', (req, res, next) => {
res.locals.connection.query(`select *
from tabela1
inner join tabela2
on tabela1.id = tabela2.id;`, (error, results, fields) => {
if (error) {
res.send({
"status" : 500,
"error" : error,
"response" : null
});
} else {
res.send({
"status" : 200,
"error" : null,
"response" : results
});
}
});
});
发布于 2018-06-13 07:46:46
有人在巴西堆栈溢出社区上回答了我的问题,它就像我所需要的那样工作:https://pt.stackoverflow.com/questions/306134/restful-api-com-nodejs-e-mysql-com-multiplas-colunas-quero-retornar-json-em-nív
// Response from Mysql
const resultados = [
{
coluna1: 'AAAAA',
coluna2: 'XXXXX'
},{
coluna1: 'AAAAA',
coluna2: 'YYYYY'
},{
coluna1: 'BBBBB',
coluna2: 'ZZZZZ'
},
]
// Function that returns an array "other_array" that contains many objects with the data of the second column.
function retornaColuna(coluna) {
const colunaFiltrada = new Array()
resultados.forEach(valor => {
if(valor.coluna1 == coluna)
colunaFiltrada.push({ coluna2: valor.coluna2 })
})
return colunaFiltrada
}
// Create the expected structure
let resposta = new Array()
resultados.forEach(valor => {
resposta.push({ coluna1: valor.coluna1, outra_array: retornaColuna(valor.coluna1) })
})
// Remove the duplicated columns
resposta = resposta.filter((a) => !this[JSON.stringify(a)] && (this[JSON.stringify(a)] = true))
console.log(resposta) // It will return the expected
https://stackoverflow.com/questions/50804855
复制相似问题