我想传递一个"令牌"对象POST / MyObject。最简单的方法似乎是将它作为属性添加到MyObject.json。问题是这个令牌没有持久存在(它不会持续很长时间而且不需要保存它)。
我想出了如何解决POST这个问题:
MyObject.beforeRemote('create', function (context, unused, nextFn) {
var token = context.args.data.token;
//We have to delete this so it doesn't try to put it in the database
delete context.args.data.token;
nextFn();
});
但是当我进行GET时代码崩溃了。
我尝试将它作为第二个参数添加到新的远程方法中,将MyObject作为第一个参数,但是在与strongloop进行了三个小时的摔跤并且没有任何显示之后我放弃了/
有没有办法只添加一个属性,以便我可以在节点中使用它,但是不能保留它?
答案 0 :(得分:1)
您可以仅为表示定义模型。
//MyObjectInput.json
{
"name": "MyObjectInput",
"base": "Model",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"name": {
"type": "string",
"required": true
},
"token": {
"type": "string"
}
...
},
"validations": [],
"relations": {},
"acls": [],
"methods": {}
}
//MyObject.json
{
"name": "MyObject",
"base": "PersistedModel",
"strict": true,
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"name": {
"type": "string",
"required": true
}
...
},
"validations": [],
"relations": {},
"acls": [],
"methods": {}
}
请注意sctrict
中的MyObject.json
键。它表示应该保留所有已定义的属性。现在您在token
定义中没有MyObject
,因此它不会保留。
//MyObject.js
MyObject.remoteMethod(
'create', {
accepts: [
{
arg: 'data',
type: 'MyObjectInput',
http: {source: 'body'}
}
],
returns: {
arg: 'result',
type: 'object',
root: true
},
http: {
path: "/create",
verb: 'post',
status: 201
}
}
);