Size: a a a

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

2019 November 04

PS

Pavel Shakhov (pongo) in Node.js — русскоговорящее сообщество
rovnyart 🐾
как мне лучше поступить, подскажите плз) я не хочу городить отдельные методы, я хочу создать такой объект, который сам асинхронно полезет в бд с параметрами, которые я передал в конструктор
в классе сделать асинхронный статик метод create, который будет выполнять все нужные вещи и возвращать класс
источник

AZ

Artem Zuev in Node.js — русскоговорящее сообщество
и вместо привычного

const o = new ClassName(...)

делать

const o = await ClassName.getObject(...)
источник

r🐾

rovnyart 🐾 in Node.js — русскоговорящее сообщество
ладно, спасибо, ща че нибудь наколхозим)
источник

JD

John Doe in Node.js — русскоговорящее сообщество
Pavel Shakhov (pongo)
потому что this.init из конструктора вызывается не в try-catch
не, там же init асинхронный, через try catch не поймаешь просто так
источник

PS

Pavel Shakhov (pongo) in Node.js — русскоговорящее сообщество
John Doe
не, там же init асинхронный, через try catch не поймаешь просто так
там промис и его нужно через .catch ловить
источник

PS

Pavel Shakhov (pongo) in Node.js — русскоговорящее сообщество
но внешним try-catch из функции он не поймается
источник

AZ

Artem Zuev in Node.js — русскоговорящее сообщество
Pavel Shakhov (pongo)
там промис и его нужно через .catch ловить
смотря какой промис, есть реализации, которые не кидают исключения... =)
источник

JD

John Doe in Node.js — русскоговорящее сообщество
Ну да, я просто не понял тебя
источник

JD

John Doe in Node.js — русскоговорящее сообщество
Artem Zuev
смотря какой промис, есть реализации, которые не кидают исключения... =)
например?
источник

AZ

Artem Zuev in Node.js — русскоговорящее сообщество
new Promise((resolve) => {
....
resolve(...);
})
источник

AZ

Artem Zuev in Node.js — русскоговорящее сообщество
такой промис в принципе исключение не кинет, и ловить его через catch - просто "глухая" ветка кода
источник

JD

John Doe in Node.js — русскоговорящее сообщество
Artem Zuev
new Promise((resolve) => {
....
resolve(...);
})
а, ну так значит и не надо кидать
источник

PS

Pavel Shakhov (pongo) in Node.js — русскоговорящее сообщество
Artem Zuev
new Promise((resolve) => {
....
resolve(...);
})
и чего? в его коде используется throw
источник

AZ

Artem Zuev in Node.js — русскоговорящее сообщество
Pavel Shakhov (pongo)
и чего? в его коде используется throw
а к чему этот комментарий? меня попросили просто привести пример промиса без catch - я показал, и все =)
источник

AS

Alexandr Shumakov in Node.js — русскоговорящее сообщество
Ребят, подскажите, есть столбец в postgres, uin, 20-25 числе длина, превышает big serial, варианта кроме как перевести все в варчар нет?
источник

r🐾

rovnyart 🐾 in Node.js — русскоговорящее сообщество
ну да, в общем, хоть мне так и не нравится, но так работает - приходится теперь сначала во внешней функции создавать экземпляр класса, а потом делать await orangeData.init(), тогда все правильно. спасибо всем, кто откликнулся)
источник

AZ

Artem Zuev in Node.js — русскоговорящее сообщество
так добавьте просто в свой инит:

static async init(account){
 const result = new this(account);

 ... тут ваш остальной код
}


и вызывайте где нужно не:

const obj = new Oran...(account);
await obj.init();

а просто:

const obj = await Oran....init(accout);
источник

r🐾

rovnyart 🐾 in Node.js — русскоговорящее сообщество
🤔 хм, а ведь и правда
источник

AZ

Artem Zuev in Node.js — русскоговорящее сообщество
а, ну да, в инит еще все this. надо заменить на result.
источник

r🐾

rovnyart 🐾 in Node.js — русскоговорящее сообщество
спасибо)
источник