Size: a a a

Node.js — русскоговорящее сообщество

2020 December 22

АП

Алексей Попов... in Node.js — русскоговорящее сообщество
The Fallen Phoenix
Наоборот, большая часть является именно CHOR, а прям каноничными мидлварами являются далеко не все.
Тогда я опять не понимаю тебя, потому что мне показалось, что до этого ты писал противоположное
https://t.me/nodejs_ru/585793 (второе предложение)
Но если что, я уловил, что именно ты называешь каноничным миддлварями (логгер, метрики). Видимо речь о том, что оставаясь в рамках каноничных миддлварей можем не считать их антипаттерном
источник

V

Vlad in Node.js — русскоговорящее сообщество
Oleg Livcha
Всем доброго времени суток!Вопрос по поводу mongoose, официальная документация на их сайте говорит что нужно использовать метод exe() для вызова запроса к БД даже с использованием async/await хотя я его не использую но всё работает на ура,просветите пожалуйста в чем выражается необходимость использования exec метода?
exec выполняет запрос, но сам монгус возвращает не промис, а thenable объект, в котором если вызывается then(а await его вызывает), выполняется exec
источник

V

Vlad in Node.js — русскоговорящее сообщество
проще говоря если ты юзаешь then/await в .exec нет смысла
источник

OL

Oleg Livcha in Node.js — русскоговорящее сообщество
Vlad
exec выполняет запрос, но сам монгус возвращает не промис, а thenable объект, в котором если вызывается then(а await его вызывает), выполняется exec
Огромное спасибо за ответ,все понял !!!
источник

AV

Alex V. in Node.js — русскоговорящее сообщество
Всем привет!

В БД есть 3 таблицы - article, article_tag, article_tag_many (многие-ко-многим). При попытке вручную добавить сначала новую article, потом несколько article_tag, а затем их  id в article_tag_many - всё ок, с базой проблем нет.

Использую Knex.js + Bookshelf.js. На вход метода add (article) одним из параметров попадает tags - это масив объектов вида [{tag: "тег1"}, {tag: "тег2"}, {tag: "тег3"}]. Далее создается article. Следующим шагом - article_tags. И теперь мне необходимо сохранить в article_tag_many значения id передаваемых в метод тегов.

Т.e. теги в таблицу с тегами записались, как теперь  средствами ORM получить их id , чтобы записать в article_tag_many?

Пробовал такое: const tagId = await knex.raw(`select nextval('article_tag_id_seq')`);
И далее - Number(tagId.rows[0]['nextval']) - idOffset как значение id тега (где idOffset - количество объектов в передаваемом массиве)

Но такой подход мне не нравится + к тому же он еще и не работает: в консоли я вижу правильные значения идентификаторов (в базе ровно такие же значения после вызова метода):

ArticleId 197
TagId  415
ArticleId 197
TagId  416
ArticleId 197
TagId  417

Но в итоге появляется ошибка:

UnhandledPromiseRejectionWarning: error: insert or update on table "article_tag_many" violates foreign key constraint "article_tag_many_tag_id_fkey"

Вот код:

export async function add(<SomeAttrs here>, tags, <SomeAttrs here>) {
 try {
   const myArticle = new Article({ <SomeAttrs here> });

   await myArticle.save();

   for (const tag of tags) {
     await new Tags({ tag: tag['tag'] }).save();
   }

   const articleId = await knex.raw(`select nextval('article_id_seq')`);

   tags.forEach(async (_tag) => {
     const tagId = await knex.raw(`select nextval('article_tag_id_seq')`);

     try {
       await myArticle.related('tags').create({
         articleId: Number(articleId.rows[0]['nextval']) - 1,
         tagId: Number(tagId.rows[0]['nextval']) - 3
       });
     } catch (err) {
       throw err;
     }
   });

   return myArticle;
 } catch (error) {
   throw new BadRequestError(error.message);
 }
}
источник

WC

Wind Crack in Node.js — русскоговорящее сообщество
Всем доброго времени суток. Как сделать редирект в express, по router vuejs? То есть у меня прописаны все роуты во вью, но я не могу понять, как мне сделать, чтобы редирект производился по этим роутера, в express?
источник

A

Aleksandr in Node.js — русскоговорящее сообщество
Всем привет! Где можно почитать про создание своей платежной системы? Например что бы юзер ввёл данные карты и у него само списывало-возвращало деньги  например как вот тут
источник

A

Aleksandr in Node.js — русскоговорящее сообщество
источник

A

Aleksandr in Node.js — русскоговорящее сообщество
источник

a

allpeg in Node.js — русскоговорящее сообщество
Aleksandr
Всем привет! Где можно почитать про создание своей платежной системы? Например что бы юзер ввёл данные карты и у него само списывало-возвращало деньги  например как вот тут
Это не своя платежная система. Это надо искать платежного провайдера который позволяет проводить платежи через API
источник

ДФ

Дмитрий Филиппенко... in Node.js — русскоговорящее сообщество
Hold платежа

Есть например у ликпей или вайфорпей, вопрос гуглится
источник

PS

Pavel Shakhov (pongo... in Node.js — русскоговорящее сообщество
Alex V.
Всем привет!

В БД есть 3 таблицы - article, article_tag, article_tag_many (многие-ко-многим). При попытке вручную добавить сначала новую article, потом несколько article_tag, а затем их  id в article_tag_many - всё ок, с базой проблем нет.

Использую Knex.js + Bookshelf.js. На вход метода add (article) одним из параметров попадает tags - это масив объектов вида [{tag: "тег1"}, {tag: "тег2"}, {tag: "тег3"}]. Далее создается article. Следующим шагом - article_tags. И теперь мне необходимо сохранить в article_tag_many значения id передаваемых в метод тегов.

Т.e. теги в таблицу с тегами записались, как теперь  средствами ORM получить их id , чтобы записать в article_tag_many?

Пробовал такое: const tagId = await knex.raw(`select nextval('article_tag_id_seq')`);
И далее - Number(tagId.rows[0]['nextval']) - idOffset как значение id тега (где idOffset - количество объектов в передаваемом массиве)

Но такой подход мне не нравится + к тому же он еще и не работает: в консоли я вижу правильные значения идентификаторов (в базе ровно такие же значения после вызова метода):

ArticleId 197
TagId  415
ArticleId 197
TagId  416
ArticleId 197
TagId  417

Но в итоге появляется ошибка:

UnhandledPromiseRejectionWarning: error: insert or update on table "article_tag_many" violates foreign key constraint "article_tag_many_tag_id_fkey"

Вот код:

export async function add(<SomeAttrs here>, tags, <SomeAttrs here>) {
 try {
   const myArticle = new Article({ <SomeAttrs here> });

   await myArticle.save();

   for (const tag of tags) {
     await new Tags({ tag: tag['tag'] }).save();
   }

   const articleId = await knex.raw(`select nextval('article_id_seq')`);

   tags.forEach(async (_tag) => {
     const tagId = await knex.raw(`select nextval('article_tag_id_seq')`);

     try {
       await myArticle.related('tags').create({
         articleId: Number(articleId.rows[0]['nextval']) - 1,
         tagId: Number(tagId.rows[0]['nextval']) - 3
       });
     } catch (err) {
       throw err;
     }
   });

   return myArticle;
 } catch (error) {
   throw new BadRequestError(error.message);
 }
}
tags.forEach не ждет выполнения async функций
источник

T

The Fallen Phoenix in Node.js — русскоговорящее сообщество
Алексей Попов
Тогда я опять не понимаю тебя, потому что мне показалось, что до этого ты писал противоположное
https://t.me/nodejs_ru/585793 (второе предложение)
Но если что, я уловил, что именно ты называешь каноничным миддлварями (логгер, метрики). Видимо речь о том, что оставаясь в рамках каноничных миддлварей можем не считать их антипаттерном
Только малая часть так называемых Middleware являются ими (=реальными Middleware) с строгой точки зрения
источник

A

Aleksandr in Node.js — русскоговорящее сообщество
allpeg
Это не своя платежная система. Это надо искать платежного провайдера который позволяет проводить платежи через API
А есть дока какая то на это?
источник

SK

Sergey Kazak in Node.js — русскоговорящее сообщество
Aleksandr
Всем привет! Где можно почитать про создание своей платежной системы? Например что бы юзер ввёл данные карты и у него само списывало-возвращало деньги  например как вот тут
идешь в свой цб открываешь банк, можешь и процессинговую компанию, получаешь лицензию от цб, подключаешься к SWIFT, и развлекаешься как душа пожелает в рамках закона и ограничений финансового регулятора.
Ну или как написали выше, ищешь платежного провайдера, который предоставляет такое API.
И да книги и статьи о том, как написать такие вещи есть на java, поищи. Там упрощенные варианты платежных систем любят использовать как пример построения архитектуры или приложений.
источник

T

The Fallen Phoenix in Node.js — русскоговорящее сообщество
Алексей Попов
Тогда я опять не понимаю тебя, потому что мне показалось, что до этого ты писал противоположное
https://t.me/nodejs_ru/585793 (второе предложение)
Но если что, я уловил, что именно ты называешь каноничным миддлварями (логгер, метрики). Видимо речь о том, что оставаясь в рамках каноничных миддлварей можем не считать их антипаттерном
Там был спор, где одна сторона приводила аргумент, подразумевая одно определение, а другая --- другое, более строгое. Я устал на это смотреть и написал то сообщение.
источник

T

The Fallen Phoenix in Node.js — русскоговорящее сообщество
Алексей Попов
Тогда я опять не понимаю тебя, потому что мне показалось, что до этого ты писал противоположное
https://t.me/nodejs_ru/585793 (второе предложение)
Но если что, я уловил, что именно ты называешь каноничным миддлварями (логгер, метрики). Видимо речь о том, что оставаясь в рамках каноничных миддлварей можем не считать их антипаттерном
Ну типа того, у этого паттерна есть валидные кейсы, особенно когда нужно слой абстракций прикрутить для унификации различий между реализациями. Но только в том случае, если "абстракции не протекают"
источник

T

The Fallen Phoenix in Node.js — русскоговорящее сообщество
Ну и уже приведенные примеры, когда устанавливаются инструменты наблюдения типа логгеров и метрик
источник

T

The Fallen Phoenix in Node.js — русскоговорящее сообщество
Тоже валидный кейс вполне
источник

АП

Алексей Попов... in Node.js — русскоговорящее сообщество
Понял
источник