环回:发送额外的 key/value 对作为响应
Loopback: Send extra key/value pairs in response
我已经搜索了文档,但无法找到如何向我的 json 回复中添加其他数据。
假设我正在对 /api/customers
执行 GET 调用
我希望每个客户 return 字段 "address" 这是客户模型中定义的 street_name 和 door_number 属性的串联。
所以我需要在某处定义 "address" = 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 响应中。所有字段都在那里,但没有地址。似乎代码只在应用程序启动时执行。
常量查询=SELECT *, CONCAT( door_number|| ' ' || street_name) as address from customer
这里我使用的是postgresql数据库
loopback.dataSources.postgres.connector.query(query, (err, res) => {
return cb(err, res);
});
只有执行native query才能实现response的两列拼接,loopback的默认方法不支持
我认为这是一个优雅的解决方案:
// 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()
})
}
我已经搜索了文档,但无法找到如何向我的 json 回复中添加其他数据。
假设我正在对 /api/customers
执行 GET 调用我希望每个客户 return 字段 "address" 这是客户模型中定义的 street_name 和 door_number 属性的串联。
所以我需要在某处定义 "address" = 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 响应中。所有字段都在那里,但没有地址。似乎代码只在应用程序启动时执行。
常量查询=SELECT *, CONCAT( door_number|| ' ' || street_name) as address from customer
这里我使用的是postgresql数据库
loopback.dataSources.postgres.connector.query(query, (err, res) => {
return cb(err, res);
});
只有执行native query才能实现response的两列拼接,loopback的默认方法不支持
我认为这是一个优雅的解决方案:
// 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()
})
}