Kuzzle / реагировать на родной - не может наследовать класс от BaseController - PullRequest
1 голос
/ 10 мая 2019

Я пытаюсь расширить KUZZLE JavaScript SDK для вызова некоторых контроллеров на серверах kuzzle, реализованных с помощью плагинов. Я следую этому руководству: добавить контроллер

Вот мой контроллер, который простирается от BaseController :

const { BaseController } = require('kuzzle-sdk');

export class UserController extends BaseController {
  constructor (kuzzle) {
  super(kuzzle, 'plugins-user/userController');
}

/**
 * Method to call the action "CreateAccount" on the UserController
 * @param {*} user 
 */
 async createAccount(user) {
   const apiRequest = {
     action: 'new',
     body: {
       user
     }
 };

 try {
    const response = await this.query(apiRequest);
    return response.result.user;
 }
 catch (error) {
    //Manage errors
 }
}
}

А вот где я указываю контроллер для дальнейшего его использования в приложении при создании синглтона.

const {UserController} = require('./UserController');
const { Kuzzle, WebSocket } = require('kuzzle-sdk');

class KuzzleService {

static instance = null;
static async createInstance() {
    var object = new KuzzleService();
    object.kuzzle = new Kuzzle(
        new WebSocket('localhost'),{defaultIndex: 'index'}
    );
    object.kuzzle.useController(UserController, 'user');

    await object.kuzzle.connect();
    const credentials = { username: 'admin', password: 'pass' };
    const jwt = await object.kuzzle.auth.login('local', credentials);
    return object;
}

static async getInstance () {
    if (!KuzzleService.instance) {
        KuzzleService.instance = await KuzzleService.createInstance();
    }
    return KuzzleService.instance;
}

  }
 export default KuzzleService;

Почему-то я получаю следующую ошибку:

Контроллеры должны наследоваться от базового контроллера

Что-то не так с импортом?

1 Ответ

1 голос
/ 10 мая 2019

Я нашел решение этой проблемы. Во-первых, у меня не было правильной версии SDK kuzzle, выпущенной недавно (6.1.1), а во-вторых, класс контроллера должен быть экспортирован как по умолчанию :

const { BaseController } = require('kuzzle-sdk');

 export default class UserController extends BaseController {
   constructor (kuzzle) {
     super(kuzzle, 'plugins-user/userController');
 }

 /**
 * Method to call the action "CreateAccount" on the UserController
 * @param {*} user 
 */
 async createAccount(user) {
    const apiRequest = {
      action: 'new',
      body: {
        user
      }
    };

   try {
     const response = await this.query(apiRequest);
     return response.result.user;
   }
   catch (error) {
     //Manage errors
    }
 }
 }

И тогда UserController должен быть таким образом импортирован:

import UserController from './UserController.js'

Затем, как указано в документации, нам нужно просто вставить объект kuzzle в контроллер следующим образом:

kuzzle.useController(UserController, 'user');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...