环回:如何从脚本访问模型?

时间:2018-04-25 12:38:06

标签: node.js loopbackjs

我正在使用Loopback并希望通过脚本将数据保存到数据库中。

我编写了一个自定义命令,我将通过cronjob运行:

'use strict';

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

app.start = function() {
  return app.listen(function() {
    const baseUrl = app.get('url').replace(/\/$/, '');
    console.log('Web server listening at: %s', baseUrl);
    let Dish = app.models.dish;
    console.log(Dish);
  })
}

boot(app, __dirname, function(err) {
  if (err) throw err;

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

我得到的输出是:

Web server listening at: http://localhost:3000
undefined

如何访问菜模型?

3 个答案:

答案 0 :(得分:2)

您可以在环回中访问模型,如下所示:

首先需要当前文件中的server.js文件。

const app = require('YOUR_SERVERJS_FILE_PATH');
const MY_MODEL = app.models.YOUR_MODEL_NAME

此处, YOUR_MODEL_NAME 与YOUR_MODEL.json文件的名称值相同。

希望你能明白我的意思。 谢谢。

答案 1 :(得分:0)

您没有调用启动功能

https://github.com/strongloop/loopback-boot

  

loopback-boot模块初始化(bootstraps)一个LoopBack   应用。具体来说,它:

     

配置数据源。

     

定义自定义模型配置模型并将模型附加到数据源。

     

配置应用程序设置

     

运行其他启动脚本,因此您可以将自定义安装代码放在多个小文件中,而不是放在主应用程序文件中。

您的服务器js可能包含与此类似的内容

var boot = require('loopback-boot');

app.start = function() {
    return app.listen(function() {
        const baseUrl = app.get('url').replace(/\/$/, '');
        console.log('Web server listening at: %s', baseUrl);
        if (app.get('loopback-component-explorer')) {
            const explorerPath = app.get('loopback-component-explorer').mountPath;
            console.log('Browse your REST API at %s%s', baseUrl, explorerPath);
        }
    })
}

boot(app, __dirname, function(err) {
  if (err) throw err;

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

您需要这些来启动应用程序。你可能只能通过调用boot来逃避,但我认为app.start是连接数据源的那个。

答案 2 :(得分:0)

像这样构建命令脚本:

let app = require('./server/server') // Set the path according on the location of your command script

app.models.YOUR_MODEL // Access the model