例如,我有一个环回模型名Event
,它有2个属性,如:
...
"properties": {
"name": {
"type": "string",
"required": true
},
"end": {
"type": "date",
"required": false
}
}...
如何使用以下逻辑添加动态属性名称status
:
if (now() > this.end) {
this.status = 'end';
} else {
this.status = 'running';
}
此外,我还希望在Loopback REST API的JSON响应中使用status
。谢谢你们。
答案 0 :(得分:1)
如果在远程挂钩或操作挂钩中添加必需属性ctx
,则该属性将添加到模型中并保存到数据库中。
使用远程钩子,
Event.beforeRemote('*', (ctx, modelInstance, next) => {
ctx.req.body.propertyName = propertyValue;
...
next();
});
这里,*可以是任何端点的任何操作。有关详细信息,请参阅this。
使用Operation hook,
Event.observe('before save', (ctx, next) => {
//for insert, full update
if(ctx.instance) {
ctx.instance.propertyName = propertyValue;
...
return next();
}
// for partial update
else if(ctx.data) {
ctx.data.propertyName = propertyValue;
...
return next();
}
});
答案 1 :(得分:0)
我认为最简单的方法是使用remote hooks,只需将属性添加到结果集中即可。解释一下文档:
Event.afterRemote('**', function (ctx, user, next) {
const now = new Date();
if(ctx.result) {
if(Array.isArray(ctx.result)) {
ctx.result.forEach(function (result) {
result.status = now > result.end ? 'end' : 'running';
});
} else {
result.status = now > result.end ? 'end' : 'running';
}
}
next();
});