如何创建第三方登录,使用loopback-component-passport将数据插入到继承环回基础模型的自定义模型中?

时间:2017-03-24 13:04:17

标签: node.js loopbackjs

创建扩展基本模型的自定义模型时,数据将插入基本模型,而不是自定义模型

服务器/

server.js

passportConfigurator.init();

passportConfigurator.setupModels({
  userModel: app.models.customer,
  userIdentityModel: app.models.customerIdentity,
  userCredentialModel: app.models.customerCredential,
});

模型config.json

{
  "_meta": {
    "sources": [
      "../common/models",
      "./models",
      "./node_modules/loopback-component-passport/lib/models"
    ]
  },
  "User": {
    "dataSource": "mongoDb",
    "public": false
  },
  "AccessToken": {
    "dataSource": "mongoDb",
    "public": false
  },
  "customer": {
    "dataSource": "mongoDb",
    "public": true
  },
  "accessToken": {
    "dataSource": "mongoDb",
    "public": false
  },
  "customerCredential": {
    "dataSource": "mongoDb",
    "public": false
  },
  "customerIdentity": {
    "dataSource": "mongoDb",
    "public": false
  },
  "ACL": {
    "dataSource": "mongoDb",
    "public": false
  },
  "RoleMapping": {
    "dataSource": "mongoDb",
    "public": false
  },
  "Role": {
    "dataSource": "mongoDb",
    "public": false
  }
}

公共/模型

customer.json

{
  "name": "customer",
  "plural": "customers",
  "base": "User",
  "relations": {
    "accessTokens": {
      "type": "hasMany",
      "model": "accessToken",
      "foreignKey": "customerId"
    },
    "customeridentities": {
      "type": "hasMany",
      "model": "customerIdentity",
      "foreignKey": "customerId"
    },
    "customercredentials": {
      "type": "hasMany",
      "model": "customerCredential",
      "foreignKey": "customerId"
    }
  },
  "validations": [],
  "acls": [],
  "methods": []
}

客户credential.json

{
  "name": "customerCredential",
  "plural": "customerCredentials",
  "base": "UserCredential",
  "properties": {},
  "validations": [],
  "relations": {
    "customer": {
      "type": "belongsTo",
      "model": "customer",
      "foreignKey": "customerId"
    }
  },
  "acls": [],
  "methods": []
}

accessToken.json

{
  "name": "accessToken",
  "plural": "accessTokens",
  "base": "AccessToken",
  "properties": {},
  "validations": [],
  "relations": {
    "customer": {
      "type": "belongsTo",
      "model": "customer",
      "foreignKey": "customerId"
    }
  },
  "acls": [],
  "methods": []
}

customerIdentity.json

{
  "name": "customerIdentity",
  "plural": "customerIdentities",
  "base": "UserIdentity",
  "properties": {},
  "validations": [],
  "relations": {
    "customer": {
      "type": "belongsTo",
      "model": "customer",
      "foreignKey": "customerId"
    }
  },
  "acls": [],
  "methods": []
}

以上是代码中的配置。

但是在数据库中,创建的表是User和AccessToken,而不是customer和accessToken。

当我从model-config.json中删除用户和访问令牌时。

"User": {
    "dataSource": "mongoDb",
    "public": false
  },
  "AccessToken": {
    "dataSource": "mongoDb",
    "public": false
  }

在mongo数据库中创建了customer表和accessToken表(自定义表)。 但是我在控制台中收到以下错误消息。

错误消息

模型" accessToken"配置"属于类似用户的模型"与目标模型的关系"用户"。但是,模型"用户"不附加到应用程序,因此不能被这种关系使用。当应用程序具有自定义自定义User子类时,通常会发生这种情况,但不会修复AccessToken关系以使用此新模型。 但是当将User和AccessToken添加到model-config时,在db中创建的表不是自定义dbs customer和accessToken。它的基础数据模型是User和AccessToken。

0 个答案:

没有答案