在Loopback.js中,如何在不运行应用程序的情况下运行独立脚本?

时间:2016-08-11 13:17:24

标签: node.js loopbackjs

我正在运行一个独立脚本来操作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);     ^

     

错误:找不到模型:帐户

如何在不运行应用程序的第二个实例的情况下运行此脚本(或者可能使用不同的方法)来操作持久化数据?

1 个答案:

答案 0 :(得分:3)

你的最终目标是什么?您可以使用loopback-connector-remote通过REST API命中同一个应用程序实例。

您还可以通过第二个应用实例对同一个数据库执行操作。

第三个选项是创建类Model的模型(而不是PersistedModel),将其数据源定义为null,而不是运行第二个nodejs进程,通过命中关联的端点来执行脚本。我只是确保为该特定端点使用良好的安全策略。