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.mymodel我可以开始调用内置的环回方法来添加数据。app.models.*的哪一部分未定义?我正在为我的用户模型执行此操作,但它提供app.models.user.find({where:{}})无法读取服务器folderI中自定义scipt中未定义的find属性。我刚刚再次检查了我们的脚本,我们除了需要app.js之外没有做任何其他事情……是的,解决了问题。这是因为某种循环要求。此代码似乎是环回3中的默认代码。我发现我需要将逻辑向上移动一点,以便围绕boot()
调用