javascript - LoopbackJS 获取经过身份验证的 UserId 以存储在模型中,而不通过 API 公开它
问题描述
我在 Loopback 中有以下“内容”模型,需要经过身份验证的用户才能访问。每条内容只能由一个用户创建。(用户继承自 Loopback 内部用户模型)因此,在创建内容时,我希望将 UserId 存储在内容记录中。但是,我希望这发生在幕后,而不必通过 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": {}
}
解决方案
首先,我将为内容创建一个新关系。所以我会将关系添加到您的内容模型中:
"relations": {
"author": {
"type": "belongsTo",
"model": "user", // <-- your user model name
"foreignKey": ""
}
}
然后,您可以使用before save
钩子userId
在您的内容模型上设置。
或者,你可以简单地下载这个 mixin 来为你做。
推荐阅读
- excel - 如何在excel的一列行中匹配一列字符串?
- c++ - 如何在 OpenSSL 库的名称中添加后缀“d”?
- javascript - 所有事件都有一个监听器数组还是所有“发射器”都有一个监听器数组?
- html - Iron Python 在 Spotfire 客户端的初始加载中触发,但对于 Spotfire Web 播放器没有触发
- python - 反应角色 Discord.py
- c# - C# 如何将时间 [ms, s, m, h, d] 作为字符串转换为秒作为 int
- automake - automake 需要 makeinfo 而 texinfo 需要 aclocal
- r - R Shiny 反应性错误,我该如何解决?
- javascript - 如何从 React-Router-Dom 停止对 Link 元素的传播?
- sql-server - 使用 JDBC 的命名管道连接