我可以在strongloop中隐藏数据源中的模型属性吗?

时间:2016-09-05 20:12:19

标签: loopbackjs strongloop loopback

我想传递一个"令牌"对象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进行了三个小时的摔跤并且没有任何显示之后我放弃了/

有没有办法只添加一个属性,以便我可以在节点中使用它,但是不能保留它?

1 个答案:

答案 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
            }
        }
    );