StrongLoop在每次上传模型之前修改数据

时间:2016-07-11 09:26:08

标签: loopbackjs strongloop

我在LoopBackJS中有以下模型:

{
  "name": "member",
  "base": "PersistedModel",
  "properties": {
    "firstName": {
      "type": "string"
    }
    "public": {
      "type": "boolean"
    }
  },
  "relations": {
    "spouse": {
      "type": "hasOne",
      "model": "spouse",
      "foreignKey": "spouseId"
    }
  }
}

现在我需要修改firstName字段,因此只能看到"public": true成员的名字,而其他人则会firstName: "*"。我已经有了这个功能。

但是如何访问每个数据访问请求的数据?

我尝试使用操作挂钩,例如find,findOne,...但是当我想念其中一个用户时,一些用户可以访问firstName。 使用遥控器,它也一样。

现在我尝试使用连接器挂钩:

connector.observe('after execute', function(ctx, next) {
if (ctx.model === 'familyMember') {
    if (ctx.req.command === 'find') {
    }
  }
  next();
});

对于所有查找查询(mongodb)但我无法访问数据。有没有办法访问这些数据?或者是否有更好的(内置)解决方案来解决这个问题?

1 个答案:

答案 0 :(得分:1)

您需要在每个遥控器后检查结果:

member.afterRemote('**', function(ctx, modelInstance, next) {
  if (ctx.result) {
    if (Array.isArray(modelInstance)) {
      var answer = [];
      ctx.result.forEach(function (result) {
        if(result.public === false)
          result.firstName = "*";
        answer.push(result);
      });
    } else {     
      var answer =ctx.result;
      if(answer.public === false)
        answer.firstName = "*";  
    }
    ctx.result = answer;
  }
  next();
});