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

Loopbackjs 如何在不实例化服务器/应用程序的情况下访问环回模型,loopbackjs,strongloop,Loopbackjs,Strongloop,我想编写一个脚本来创建一些用户,并将它们链接到其他资源 检查环回文档,他们告诉您实例化应用程序/服务器以完成它 但是这个方法意味着让应用程序运行,这是我想要避免的副作用 有没有想过如何只访问模型而不访问整个应用程序?如果要通过环回创建一些种子数据,可以创建一个seedusers.js文件,其中包含以下代码: var loopback = require('loopback'); var boot = require('loopback-boot'); var app = module.expor

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

检查环回文档,他们告诉您实例化应用程序/服务器以完成它

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


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

如果要通过环回创建一些种子数据,可以创建一个
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.models,而无需运行任何不必要的操作。

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

要覆盖它,请在要求环回之前添加以下内容:

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

为什么不希望应用程序运行?它的副作用是什么?该应用程序连接到一系列服务,因此我们只需要一个实例运行,并且能够并行运行脚本。因此,这将实例化用于创建新的
用户的
应用程序
,因为它没有服务器启动代码,服务器将不会启动。我说的对吗?@VishalKumar,对。我假设这是OP想要的,但我想我们得等着瞧!美好的我希望这就是他想要的,因为我不知道我们是否可以在不使用
app
的情况下创建新的
用户。我刚刚尝试过,但我得到了app.models.*的“未定义”。我将发布我们最终使用的方法。(很抱歉延迟回答。)我完全按照我在自己的脚本中发布的那样做<代码>var mymodel=app.models.mymodelboot()
调用