我正在运行一个独立脚本来操作Loopback应用程序中的一些持久数据。我需要在生产应用程序运行时在生产服务器上执行此操作。我有这样的工作:
文件路径为./scripts/my-script.js
,如下所示:
'use strict';
const app = require('../server/server');
const Account = app.models.Account;
Account.find()
.then(accounts => {
// do data stuff with accounts
})
.then(() => process.exit())
.catch(error => {
console.error(error.stack);
process.exit(1);
});
然后我运行node ./scripts/my-script.js
。
问题是整个应用程序,包括Web服务器,启动脚本等,在脚本持续时间内运行,这意味着我有两个应用程序运行实例。发生这种情况是因为我引用了Account
模型,如下所示:
const app = require('../server/server');
const Account = app.models.Account;
当我尝试:
const loopback = require('loopback');
const Account = loopback.getModel('Account');
失败了:
./ node_modules /环回/ LIB / registry.js:304 抛出新错误('未找到模型:' + modelName); ^
错误:找不到模型:帐户
如何在不运行应用程序的第二个实例的情况下运行此脚本(或者可能使用不同的方法)来操作持久化数据?
答案 0 :(得分:3)
你的最终目标是什么?您可以使用loopback-connector-remote通过REST API命中同一个应用程序实例。
您还可以通过第二个应用实例对同一个数据库执行操作。
第三个选项是创建类Model
的模型(而不是PersistedModel
),将其数据源定义为null
,而不是运行第二个nodejs进程,通过命中关联的端点来执行脚本。我只是确保为该特定端点使用良好的安全策略。