【问题标题】:Model table not getting auto created in mysql loopback 3模型表未在 mysql loopback 3 中自动创建
【发布时间】:2020-06-09 20:20:27
【问题描述】:

我是 Loopback 框架的新手。 我已经完成了入门和模型创建,并尝试创建测试应用程序。 我通过命令创建了应用程序 -> lb
并通过 -> lb datasource 创建 mysql 数据源
并创建了两个模型 -> lb model
正在使用 mysql 数据源。

{
  "name": "Brand",
  "plural": "brands",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {
    "name": {
      "type": "string",
      "required": true
    }
  },
  "validations": [],
  "relations": {},
  "acls": [],
  "methods": {}
}

所以现在当我通过npm start 启动应用程序并转到localhost:3000/explorer 并尝试使用任何端点时,我得到下表未找到错误。 Unhandled error for request GET /api/brands: Error: ER_NO_SUCH_TABLE: Table 'loop3.Brand' doesn't exist

Loopback 会自动在数据库中创建表吗?或者我将不得不为每个模型创建autoMigrate 文件或者应该如何完成请帮助..

答案:
感谢@Diana,我在boot 目录中创建了script.js 文件并添加了以下代码

'use strict';

module.exports = function(app) {
  var db = app.datasources.mysqld;

  db.autoupdate(function(err) {
    if (err) throw err;
    console.log('\nAutomigrate completed');
    // other code here
  });
};

如果任何属性发生变化,它会创建表并更新。

【问题讨论】:

    标签: node.js loopbackjs


    【解决方案1】:

    您需要运行automigrate 函数来在数据库中创建表模式。您可以在每次启动应用程序时运行的启动脚本中添加它。看这个例子: https://github.com/ssh24/loopback-sandbox/blob/master/apps/mysql/mysql-101/server/boot/script.js

    请注意automigrate 函数将删除现有表并重新创建它。这意味着任何现有数据都将丢失。可以改用autoupdate 函数。有关详细信息,请参阅此文档页面:https://loopback.io/doc/en/lb3/Creating-a-database-schema-from-models.html

    【讨论】:

    • 它在使用autoupdateboot 目录中创建文件后工作,所以现在它还创建表和编辑(如果有)。
    猜你喜欢
    • 2019-09-18
    • 2015-04-20
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    • 2016-12-30
    • 2017-05-11
    • 2018-03-30
    相关资源
    最近更新 更多