我在Loopback中具有以下“内容”模型,该模型需要经过身份验证的用户才能访问。
每个内容只能由一个用户创建。 (用户是从Loopback内部用户模型继承的)所以创建内容时,我希望将UserId存储在Content记录中。
但是,我希望这种情况在后台发生,而不必通过API传递userId。
我玩过关系,但这似乎没有解决。

{
  "name": "Content",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {
    "BooId": {
      "type": "string",
      "required": true
    },
    "Name": {
      "type": "string",
      "required": true
    },
    "Language": {
      "type": "string",
      "required": true,
      "default": "en-gb"
    },
    "Version": {
      "type": "number",
      "default": 1
    },
    "Text": {
      "type": "string",
      "required": true
    },
    "Created": {
      "type": "date",
      "defaultFn": "now"
    },
    "Tags": {
      "type": [
        "string"
      ],
      "default": []
    }
  },
  "validations": [],
  "relations": [],
  "acls": [
    {
      "accessType": "*",
      "principalType": "ROLE",
      "principalId": "$unauthenticated",
      "permission": "DENY"
    }
  ],
  "methods": {}
}

最佳答案

首先,我将为内容创建一个新关系。所以我将关系添加到您的Content模型:

"relations": {
  "author": {
    "type": "belongsTo",
    "model": "user", // <-- your user model name
    "foreignKey": ""
  }
}


然后,您可以使用before save挂钩在内容模型上设置userId

或者,您只需下载此mixin即可为您做。

https://github.com/akkonrad/loopback-author-mixin

07-24 09:51
查看更多