具有 mysql 数据库的环回默认模型

Loopback default models with a mysql database

我正在尝试环回并注意到在 model-config 文件中它引用了 5 个模型,这些模型的 dataSource 设置为内存数据库 db:

  "User": {
    "dataSource": "db"
  },
  "AccessToken": {
    "dataSource": "db",
    "public": false
  },
  "ACL": {
    "dataSource": "db",
    "public": false
  },
  "RoleMapping": {
    "dataSource": "db",
    "public": false
  },
  "Role": {
    "dataSource": "db",
    "public": false
  }

这是将用户、acl 等保存在内存中的理想行为吗?如果没有,我如何将这些模型移植到 mysql?我尝试将 dataSource 切换到我的 mysql 源,但服务器抱怨因为表不存在。

您需要进行迁移。查看 auto-migrate but the easiest solution (no coding) is to use strongloop arc.

的文档

要对其进行编码,您可以将自动迁移放入启动脚本中,例如 dataSource.automigrate();,它会构建表,但也会删除您拥有的任何现有数据。

复制粘贴以下代码到server/server.js。 (最好到最后)

var appModels = ['User', 'AccessToken', 'ACL', 'RoleMapping', 'Role'];

var ds = app.dataSources.mysqlDS;
ds.isActual(appModels, function(err, actual) {
  if (!actual) {
    ds.autoupdate(appModels, function(err) {
      if (err) throw (err);
    });
  }
});

不要忘记将模型的数据源更改为模型-config.json 中的新数据源。在代码中将 mysqlDS 替换为您的数据源。

干杯!

参考: https://loopback.io/doc/en/lb3/Creating-database-tables-for-built-in-models.html

在 MySql 数据库中添加这些 table:-

    CREATE TABLE `AccessToken` (
    `id` VARCHAR(255) NOT NULL,
    `ttl` INT(11) NULL DEFAULT NULL,
    `scopes` TEXT NULL,
    `created` DATETIME NULL DEFAULT NULL,
    `userId` INT(11) NULL DEFAULT NULL,
    PRIMARY KEY (`id`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
;
CREATE TABLE `ACL` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `model` VARCHAR(512) NULL DEFAULT NULL,
    `property` VARCHAR(512) NULL DEFAULT NULL,
    `accessType` VARCHAR(512) NULL DEFAULT NULL,
    `permission` VARCHAR(512) NULL DEFAULT NULL,
    `principalType` VARCHAR(512) NULL DEFAULT NULL,
    `principalId` VARCHAR(512) NULL DEFAULT NULL,
    PRIMARY KEY (`id`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
;
CREATE TABLE `Role` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `name` VARCHAR(512) NOT NULL,
    `description` VARCHAR(512) NULL DEFAULT NULL,
    `created` DATETIME NULL DEFAULT NULL,
    `modified` DATETIME NULL DEFAULT NULL,
    PRIMARY KEY (`id`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
;
CREATE TABLE `RoleMapping` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `principalType` VARCHAR(512) NULL DEFAULT NULL,
    `principalId` VARCHAR(255) NULL DEFAULT NULL,
    `roleId` INT(11) NULL DEFAULT NULL,
    PRIMARY KEY (`id`),
    INDEX `principalId` (`principalId`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
;
CREATE TABLE `User` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `realm` VARCHAR(512) NULL DEFAULT NULL,
    `username` VARCHAR(512) NULL DEFAULT NULL,
    `password` VARCHAR(512) NOT NULL,
    `email` VARCHAR(512) NOT NULL,
    `emailVerified` TINYINT(1) NULL DEFAULT NULL,
    `verificationToken` VARCHAR(512) NULL DEFAULT NULL,
    PRIMARY KEY (`id`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
;