У LoopbackJS проблемы с модулем collectionsJS

Мы используем платформу Strongloop Loopback для предоставления некоторых REST API. У нас есть разные модели обратной связи, соответствующие разным объектам REST. В модели loopback A мы возвращаем массив в ответе API. В другой модели loopback, модели B, мы используем коллекцию SortedSet, предоставляемую CollectionsJS, следующим образом:

var SortedSet = require('collections/sorted-set'); //Start of the file
...
...
//create the SortedSet instance and push values.

Теперь, без этого требования, API модели A правильно возвращает массив. После добавления этого требования в модель B API модели A возвращает объект вместо массива (ключи — это индексы массива, значения — значения массива). Код модели А остается нетронутым.

Итак, я предполагаю, что существует какое-то противоречие, когда Loopback и/или NodeJS используют тип, который также используется/манипулируется в CollectionsJS. Но как мне отладить эту проблему?


person Vasan    schedule 01.04.2016    source источник


Ответы (1)


Нашел! CollectionsJS "переносит" определенные дополнительные методы в прототип Array, одним из которых является "toObject". Loopback вызывает метод .toObject для всех атрибутов модели во время генерации ответа. Одним из атрибутов модели является массив, что означает, что для него также вызывается .toObject. Теперь, если я не «требую» модуль коллекций, прототип массива не внедряется с помощью метода toObject, поэтому Loopback использует обычное представление массива.

person Vasan    schedule 02.04.2016