我已经搜索了文档,但是找不到如何向json响应中添加其他数据。
假设我正在执行对/ api / customers的GET调用
我希望每个客户返回“地址”字段,该字段是“客户”模型中定义的street_name和door_number属性的串联。
所以我需要在某个地方定义“地址” = this.street_name +''+ this.door_number并将其添加到响应中。有人可以给我指出一个例子吗?
更新
我试图将其添加到customer.js
'use strict';
const app = require('../../server/server');
module.exports = function(Customer) {
const query = "SELECT *, CONCAT( door_number|| ' ' || street_name) as address from my_customer_table";
app.dataSources.mysqlIDs.connector.query(query, (err, res) => {
if (err) {
console.log(err.message);
}
return res;
});
};
更新2:
如果我在控制台上登录res:
[ RowDataPacket {
id: 5,
...
address: '491 Hondsruglaan'
},
RowDataPacket {...
}
]
当我在SQL查询地址中使用管道字符时,将显示为:
address: '1'
但是地址字段尚未反映在API响应中。所有字段都在那里,但没有地址。似乎仅在启动应用程序时执行代码。
答案 0 :(得分:2)
const查询= SELECT *, CONCAT( door_number|| ' ' || street_name) as address from customer
这里Iam使用postgresql数据库
loopback.dataSources.postgres.connector.query(query, (err, res) => {
return cb(err, res);
});
仅通过执行本机查询,您可以在响应中实现两列的连接,环回的默认方法不支持
答案 1 :(得分:1)
我认为这是一个优雅的解决方案:
// customer.js
module.exports = function(Customer) {
Customer.afterRemote('find', function(context, customers, next) {
context.result.forEach(customer => {
customer.address = customer.street_name + ' ' + customer.door_number
})
next()
})
}