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

时间:2015-11-16 14:31:21

标签: loopbackjs strongloop

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

检查回送文档,他们告诉您实例化应用程序/服务器以便完成它。 https://docs.strongloop.com/display/public/LB/Working+with+LoopBack+objects#WorkingwithLoopBackobjects-Fromacustomscript

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

有关如何仅访问模型而不访问整个应用程序的任何想法?

3 个答案:

答案 0 :(得分:2)

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

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

boot(app, __dirname);

然后运行node seedusers

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

答案 1 :(得分:1)

我们在没有启动Web服务器的情况下运行脚本所使用的是在github的环回示例中建议的“work-arround”。

在app.js中添加此内容...

$sql = new mysqli(null,
  'root', // username
  '',     // password
  <database-name>,
  null,
  '/cloudsql/<your-project-id>:<your-instance-name>'
  );

...只有在直接调用时才会启动应用程序,而不是在需要时启动。

因此,在我们的脚本中使用$conn = mysql_connect(':/cloudsql/<your-project-id>:<your-instance-name>', 'root', // username '' // password ); mysql_select_db('<database-name'>); ,我们可以完全访问app.models而无需运行任何不必要的内容。

答案 2 :(得分:0)

如果有人试图在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;