gpt4 book ai didi

loopbackjs - 如何在 Loopback 中自动迁移

转载 作者:行者123 更新时间:2023-12-02 12:39:55 25 4
gpt4 key购买 nike

我已经在环回应用程序中重命名了许多模型和表,但是我现在必须迁移到此模型定义。

我需要运行autoMigrate() 。它必须在 dataSource 对象上运行,但文档没有提供有关获取其中之一的帮助。

到目前为止,我已经在 /boot 中创建了一个新脚本,其中包含:

var loopback = require('loopback');
var app = module.exports = loopback();
app.loopback.DataSource.automigrate()

但是这个数据源对象不包含autoMigrate函数...

我尝试运行 Strongloop arc 来使用那里的自动迁移按钮,但页面因以下错误而崩溃:

Uncaught Error: [$injector:modulerr] Failed to instantiate module Arc due to:
Error: [$injector:modulerr] Failed to instantiate module Metrics due to:
Error: [$injector:nomod] Module 'Metrics' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.
http://errors.angularjs.org/1.3.20/$injector/nomod?p0=Metrics
at http://localhost:56073/scripts/vendor/angular/angular.js:63:12
at http://localhost:56073/scripts/vendor/angular/angular.js:1778:17
at ensure (http://localhost:56073/scripts/vendor/angular/angular.js:1702:38)
at module (http://localhost:56073/scripts/vendor/angular/angular.js:1776:14)
at http://localhost:56073/scripts/vendor/angular/angular.js:4131:22
at forEach (http://localhost:56073/scripts/vendor/angular/angular.js:326:20)
at loadModules (http://localhost:56073/scripts/vendor/angular/angular.js:4115:5)
at http://localhost:56073/scripts/vendor/angular/angular.js:4132:40
at forEach (http://localhost:56073/scripts/vendor/angular/angular.js:326:20)
at loadModules (http://localhost:56073/scripts/vendor/angular/angular.js:4115:5)
http://errors.angularjs.org/1.3.20/$injector/modulerr?p0=Metrics&p1=Error%3…F%2Flocalhost%3A56073%2Fscripts%2Fvendor%2Fangular%2Fangular.js%3A4115%3A5)
at http://localhost:56073/scripts/vendor/angular/angular.js:63:12
at http://localhost:56073/scripts/vendor/angular/angular.js:4154:15
at forEach (http://localhost:56073/scripts/vendor/angular/angular.js:326:20)
at loadModules (http://localhost:56073/scripts/vendor/angular/angular.js:4115:5)
at http://localhost:56073/scripts/vendor/angular/angular.js:4132:40
at forEach (http://localhost:56073/scripts/vendor/angular/angular.js:326:20)
at loadModules (http://localhost:56073/scripts/vendor/angular/angular.js:4115:5)
at createInjector (http://localhost:56073/scripts/vendor/angular/angular.js:4041:11)
at doBootstrap (http://localhost:56073/scripts/vendor/angular/angular.js:1455:20)
at bootstrap (http://localhost:56073/scripts/vendor/angular/angular.js:1476:12)
http://errors.angularjs.org/1.3.20/$injector/modulerr?p0=Arc&p1=Error%3A%20…%2Flocalhost%3A56073%2Fscripts%2Fvendor%2Fangular%2Fangular.js%3A1476%3A12)

我只是需要更新模型,并且不明白为什么这如此困难。有人知道如何克服这些障碍吗?谢谢!

最佳答案

两个问题。

首先,您显示的是 Angular 客户端错误,而问题出在服务器端。

现在,回到问题的核心。

启动脚本必须导出单个函数,该函数在同步启动脚本的情况下仅接受回送对象(您的服务器),或者在异步启动脚本的情况下接受回送对象和回调。

编写启动脚本已记录在here

函数datasource.automigrate可以同步调用。 如果您不带参数调用它,默认情况下它将针对应用中的所有模型执行,这很可能是您想要的。

因此,如果您定义的数据库名称为 mysql(在 ./server/datasources.json 中定义),则启动脚本为:

module.exports = function (app) {
app.dataSources.mysql.automigrate();
console.log("Performed automigration.");
}

您可以通过运行 node . 来检查其是否有效,而NOT则可以通过进入服务器正在监听的地址的浏览器来检查。 (与 Angular 相关的错误与启动脚本无关,它与客户端文件有关,很可能位于 client 文件夹中)。

它应该显示在终端中

Performed automigration.

关于loopbackjs - 如何在 Loopback 中自动迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40030074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com