Я занимаюсь разработкой приложения с использованием Loopback 3. Я создал удаленный метод в модели ServiceEvaluation, чтобы получить список ServiceEvaluations и связанных свойств в Service Model.
ServiceEvaluation.evaluationList = function(cb) {
ServiceEvaluation.find({
fields: {
status: true,
createdAt: true,
serviceId: true
},
include: {
relation: 'rel_ServiceEval_Service',
scope: {
fields: {
serviceName: true,
supplierId: true
}
}
}
}, function(err, response) {
cb(null, response);
});
};
Вышеуказанное работает при возврате из API Explorer, возвращающегося;
{
"list": [
{
"status": "Draft",
"serviceId": "5b8e215d81c76325b409b960",
"createdAt": "2018-09-04T06:08:29.623Z",
"rel_ServiceEval_Service": {
"serviceName": "Workplace software and SaaS",
"id": "5b8e215d81c76325b409b960",
"supplierId": "5b8e215d81c76325b409b949"
}
}, ...
Однако вместо того, чтобы возвращать массив объектов со встроенными объектами, я хочу вернуть массив сплющенных объектов для отображения в сетке данных. Ниже приведена попытка сделать это.
ServiceEvaluation.evaluationList = function(cb) {
ServiceEvaluation.find({
fields: {
status: true,
createdAt: true,
serviceId: true
},
include: {
relation: 'rel_ServiceEval_Service',
scope: {
fields: {
serviceName: true,
supplierId: true
}
}
}
}, function(err, response) {
var responseLength = response.length;
var myEntry = {};
var myList = [];
for (var i = 0; i < responseLength; i++) {
myEntry.status = response[i].status;
myEntry.createdAt = response[i].createdAt;
myEntry.serviceName = response[i].rel_ServiceEval_Service.serviceName;
myEntry.supplierId = response[i].rel_ServiceEval_Service.supplierId;
myList.push(myEntry);
}
cb(null, myList);
});
};
Результатом этого является то, что удаленный метод, похоже, не находит поля в rel_ServiceEval_Service.
{
"list": [
{
"status": "Draft",
"createdAt": "2018-09-04T06:20:40.889Z"
}, ...
Я прибегнул к выравниванию возвращаемого значения в сервисе на стороне клиента, но это не только временное решение, пока в Dev. Любое руководство о том, как сделать это в удаленном методе?