Проблема при создании метода экземпляра с использованием прототипа в loopback - PullRequest
2 голосов
/ 01 июня 2019

У меня есть две модели, ModelA и ModelB.Модель B содержит следующие свойства:

"properties": {
    "firstname": {
      "type": "string",
      "required": true
    },
    "middlename": {
      "type": "string"
    },
    "lastname": {
      "type": "string"
    }
  }

Я создал метод Instance в ModelB следующим образом:

ModelB.js

'use strict';

module.exports = function(ModelB) {
  ModelB.prototype.getFullName = function() {
    console.log(this); // Display result output shown below
  }
};

I have the following result in ModelA

someTestVariable:
   { id: 'e0a844e4-6c8a-489a-8bd6-1d62267d311e',
     firstname: 'Thomas',
     middlename: '',
     lastname: 'Henry' 

   }

Я попытался вызвать экземплярМетод в ModelB из ModelA

ModelB.prototype.getFullName();

. Это ключевое слово выдает следующее

ModelConstructor {
  firstname: [Getter/Setter],
  middlename: [Getter/Setter],
  lastname: [Getter/Setter],
  id: [Getter/Setter],
  getFullName: [Function],
  save: [Function],
  isNewRecord: [Function],
  getConnector: [Function],
  destroy: [Function],
  delete: [Function],
  remove: [Function],
  setAttribute: [Function: setAttribute],
  updateAttribute: [Function: updateAttribute],
  setAttributes: [Function: setAttributes],
  unsetAttribute: [Function: unsetAttribute],
  replaceAttributes: [Function],
  patchAttributes: [Function],
  updateAttributes: [Function],
  reload: [Function: reload] 
  }

Я не уверен, как получить данные имени, отчества и фамилии в ModelB из ModelA.Любая помощь могла бы быть полезна.

1 Ответ

3 голосов
/ 01 июня 2019

Определите метод-прототип следующим образом:

ModelB.prototype.getFullName = function() {
    return this.firstname;
}

// Call instance method by creating Model instance first.

let firstNameData = new ModelB(yourObjectDataFromModelA);

// Then call prototype function

firstNameData.getFullName();

Надеюсь, это очистит ваше сомнение.

Для получения дополнительной информации вы можете обратиться к этой петлевой документации: https://apidocs.strongloop.com/loopback-datasource-juggler/v/1.0.0/#manually-add-methods-to-the-model-constructor

...