Size: a a a

Флудилка нодскула

2016 May 20

IP

Igor Perfilyev in Флудилка нодскула
т.е. в разных модулях
источник

NK

ID:57684913 in Флудилка нодскула
ты предвидишь проблемы?
источник

IP

Igor Perfilyev in Флудилка нодскула
не знаю, проблема ли это, но вот тебе придется в разных модулях дергать mongodb.collection('resources')
источник

NK

ID:57684913 in Флудилка нодскула
угу так и задумано - одна и та же коллекция вернется
источник

NK

ID:57684913 in Флудилка нодскула
зато в тестах могу другую подсунуть из другой базы
источник

NK

ID:57684913 in Флудилка нодскула
или вообще мокнуть чтоб без базы юниттест провести
источник

IP

Igor Perfilyev in Флудилка нодскула
да, это должна быть идемпотеная функция, к ней вопросов нет)
источник

NK

ID:57684913 in Флудилка нодскула
вообще очень хочу перейти на ФП подход, вот готовлюсь :)
источник

IP

Igor Perfilyev in Флудилка нодскула
мне тоже оч. интересно, как это в фп сделано
источник

IP

Igor Perfilyev in Флудилка нодскула
вот меня немного напрягает, что в каждом модуле вызов user/save мне надо предварять mongodb.collection('resources')
источник

IP

Igor Perfilyev in Флудилка нодскула
потому что это понемногу размывает логику решения задачи
источник

IP

Igor Perfilyev in Флудилка нодскула
вместо "я хочу сохранить юзера" получается "получи монгоколлекцию и сохрани юзера"
источник

IP

Igor Perfilyev in Флудилка нодскула
поэтому я решил, что хорошо бы сразу законфигурировать модуль на нужную ему коллекцию
источник

IP

Igor Perfilyev in Флудилка нодскула
module.exports = (collection) => {save = (user) => save(collection, user)}
источник

NK

ID:57684913 in Флудилка нодскула
это и есть фп подход - ты берешь функции низкого уровня и создаешь из них уровнем повыше
источник

IP

Igor Perfilyev in Флудилка нодскула
да, это и это здорово, но это не решает до конца проблему, потому что при каждом обращении к этому модулю нужно передавать в него коллекцию + в модуле одна точка входа
источник

IP

Igor Perfilyev in Флудилка нодскула
но уже один раз вызывается
источник

IP

Igor Perfilyev in Флудилка нодскула
const user = user(userCollection);
источник

IP

Igor Perfilyev in Флудилка нодскула
и дальше уже легче, потому что user.save(user)
источник

IP

Igor Perfilyev in Флудилка нодскула
но если в каком-то модуле нужен только save, а в каком-то только get - то все равно приходится тянуть весь модуль user целиком
источник