环回:发送额外的 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()
  })
}