我们的用例要求我们为用户(提供者和消费者)提供两种不同的模型。因此,我们将用户模型扩展到消费者和提供者模型,但是当提供者的AccessToken也开始为消费者工作时很快就遇到了麻烦。
EG。让我们假设提供者A的userId为1,而消费者A的userId为1,如果提供者A登录并接收AccessToken,则他还可以通过用他的accessToken查询消费者模型来提取有关消费者A的信息。这可能会造成灾难。 ctx.req.accessToken.userId在消费者模型中为消费者和提供者令牌返回1。
我们尝试将AccessToken模型扩展为AccessTokenProvider和AccessTokenConsumer。以下是AccessTokenConsumer的模型关系
"relations": {
"user": {
"type": "belongsTo",
"model": "consumer",
"foreignKey": "userId" } }
和消费者模型
"relations": {
"accessTokens": {
"type": "hasMany",
"model": "AccessTokenConsumer",
"foreignKey": "userId",
"options": {
"disableInclude": true
}
} }
但是,现在ctx.req.accessToken返回null,logout rest函数给出错误“找不到accessToken”
答案 0 :(得分:0)
我在这里尝试了IvanZh的答案Multiple User child Models problem。
在node_modules / loopback / common / models / user.js中,在model: userModel.modelName
方法ttl:ttl
之后添加User.prototype.createAccessToken
。然后将model属性添加到access_token.json。您可能必须将表重新迁移到数据库。
您的模型名称现在将附加到ctx.req.accessToken.model,您可以使用条件来确保仅调用正确的模型类型。
请注意:如果您更新Loopback,这将被覆盖。坦率地说,这个功能应该被内置到Loopback中,因为它的缺席并没有增加强大框架的魅力,这个框架已经因文档中的缺陷而受到损害。