如何在不实例化服务器/应用程序的情况下访问环回模型



我想编写一个脚本来创建一些用户,并将它们链接到其他资源。

检查环回文档,他们告诉你实例化应用程序/服务器以使其复杂化。https://docs.strongloop.com/display/public/LB/Working+with+LoopBack+objects#使用LoopBack objects Fromacustomscript

但这种方法意味着让应用程序运行,这是我想避免的副作用。

有没有想过如何只访问模型而不访问整个应用程序?

如果您想通过Loopback创建一些种子数据,可以创建一个seedusers.js文件,其中包含以下代码:

var loopback = require('loopback');
var boot = require('loopback-boot');
var app = module.exports = loopback();
boot(app, __dirname);

然后运行node seedusers

这将运行启动目录中的任何脚本,但不会启动Web服务器。

我们用于在不启动web服务器的情况下运行脚本的是github的环回示例中建议的"工作区"。

通过在你的app.js中添加这个…

// start the server if `$ node server.js`
if (require.main === module) {
  app.start();
}

只有在被直接调用的情况下才能启动应用程序,而不是在需要的情况下。

因此,在我们的脚本中使用var app = require('../app');,我们可以完全访问app.model,而无需运行任何不必要的操作。

如果有人试图在Electron中执行此操作,则除非覆盖runtime.isServer,否则您的模型将不会在app.models中定义。

要覆盖它,请在需要环回之前添加此项:

let path = require('path');
let runtime = require(path.join(__dirname, '../node_modules/loopback/lib/runtime'));
runtime.isBrowser = false;
runtime.isServer = true;

相关内容

最新更新