Loopback: Как получить доступ к модели из скрипта? - PullRequest
0 голосов
/ 25 апреля 2018

Я использую 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 голосов
/ 26 апреля 2018

Создайте свой командный скрипт следующим образом:

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

app.models.YOUR_MODEL // Access the model
0 голосов
/ 04 мая 2018

Вы можете получить доступ к своим моделям в петлевом режиме, как показано ниже:

Прежде всего требуется файл server.js в вашем текущем файле.

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

Здесь YOUR_MODEL_NAME будет таким же, как в значении имени файла YOUR_MODEL.json.

Надеюсь, вы поймете мою точку зрения. Спасибо.

0 голосов
/ 25 апреля 2018

Вы не вызываете загрузочную функцию

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

Модуль loopback-boot инициализирует (начальной загрузкой) приложение 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 - это тот, который подключает ваши источники данных.

...