Aleksand
ну хз от ручки микросервиса я ожидаю что он либо 200 ответит либо ошибкой
ну это странно, смотри, если у тебя доступен редис, но недоступна БД и часть микросервисов от которых ты зависишь, то тут конечно можно не ответить на хэлс, и просто закрыть соединение но это как-то неспортивно и неинформативно, обычно принято код отдавать и в произвольной форме в теле список проблем
KlonD90
Sergey
KlonD90
ну traefik
KlonD90
только 200 считает валидным
Sergey
KlonD90
Да
Sergey
KlonD90
Ну во всяком случае так следует из документации. Что в опенсурсе не всегда правда
Aleksand
А 201 тоже плохо?
обычно 2**, 3** считаются положительными а их логика уже избыточный смысл для балансера
Sergey
Sergey
Но если 200 это ок а 201 нет
Это уже маразм
KlonD90
я очень сомневаюсь что ручка health в удачном состояние должна вернуть что-то кроме 200
KlonD90
у ручки health одно назначение сказать что сервис жив
KlonD90
это бинарная опция в целом
Aleksand
ты же ответив 204 не сообщил явно об ошибке, это вообще норм ответ
KlonD90
ошибки это нормально. вопрос жив ли сервис стоит ли туда роутить трафик. ошибки и прочие истории должны в мониторинг уходить
Aleksand
204 даже предпочтительнее 200 по логике хэлса
Aleksand
Roman
ребята, привет
пишу первое приложение на ноде
помогите, пожалуйста разобраться с ассоциациями(sequelize + postgress)
Есть моделька Card
var Card = sequelize.define('Card', {
name: {
allowNull: false,
type: DataTypes.STRING,
},
})
Есть моделька Partnership
var Partnership = sequelize.define('Partnership', {
comment: {
type: DataTypes.TEXT
},
})
Задача связывать между собой Card через Partnership.
Есть такие связи
Card.belongsToMany(models.Partnership, { through: 'CardPartnership' })
Partnership.belongsToMany(models.Card, { through: 'CardPartnership' })
Создание Partnership
const createdBy = ctx.request.body.fields.createdBy
const acceptedBy = ctx.request.body.fields.acceptedBy
const partnership = await models.Partnership.create({
comment: ctx.request.body.fields.comment,
createdBy: createdBy,
acceptedBy: acceptedBy,
})
await models.Card.findAll({
where: { id:[createdBy, acceptedBy] }
}).then((cards) => cards.forEach((card) => card.addPartnerships(partnership)))
Если хочется получить карточку со всеми партнерами
const card = await models.Card.find({
where: { id: cardId },
include: [{
model: models.Partnership,
through: { where: { CardId: cardId } },
include: [{
model: models.Card,
where: { id: { $not: cardId } }
}]
}]
})
Это работает. Но хочется услышать насколько это правильная механика) Может можно проще)
Sergey
ребята, привет
пишу первое приложение на ноде
помогите, пожалуйста разобраться с ассоциациями(sequelize + postgress)
Есть моделька Card
var Card = sequelize.define('Card', {
name: {
allowNull: false,
type: DataTypes.STRING,
},
})
Есть моделька Partnership
var Partnership = sequelize.define('Partnership', {
comment: {
type: DataTypes.TEXT
},
})
Задача связывать между собой Card через Partnership.
Есть такие связи
Card.belongsToMany(models.Partnership, { through: 'CardPartnership' })
Partnership.belongsToMany(models.Card, { through: 'CardPartnership' })
Создание Partnership
const createdBy = ctx.request.body.fields.createdBy
const acceptedBy = ctx.request.body.fields.acceptedBy
const partnership = await models.Partnership.create({
comment: ctx.request.body.fields.comment,
createdBy: createdBy,
acceptedBy: acceptedBy,
})
await models.Card.findAll({
where: { id:[createdBy, acceptedBy] }
}).then((cards) => cards.forEach((card) => card.addPartnerships(partnership)))
Если хочется получить карточку со всеми партнерами
const card = await models.Card.find({
where: { id: cardId },
include: [{
model: models.Partnership,
through: { where: { CardId: cardId } },
include: [{
model: models.Card,
where: { id: { $not: cardId } }
}]
}]
})
Это работает. Но хочется услышать насколько это правильная механика) Может можно проще)
gist.github.com для кого создан?
Nikita
Ну вот епт
Nikita
Хоть бы в кавыки взял
Roman
KlonD90
ну типа помимо model, through я пользуюсь association. Ты ассоциацию к примеру в статическую переменную сохраняешь и дальше ее в инклюдах используешь
KlonD90
http://docs.sequelizejs.com/manual/tutorial/associations.html
const Creator = Product.belongsTo(User, {as: 'creator'});
return Product.create({
title: 'Chair',
creator: {
first_name: 'Matt',
last_name: 'Hansen'
}
}, {
include: [ Creator ]
});
KlonD90
господи как же раздражает этот дизайн (
Roman
https://gist.github.com/ElistratovRoman/a5ba11d2f4e725e5e819e9b34230a62e
Nikita
shiet
Nikita
поставь же
Nikita
javascript
Sergey
Sergey
Roman
)) готово
ixplo
ixplo
думаю, нет :)
ixplo
разбиение регулярками делаю, тк это быстрее split оказалось
ixplo
через час выложу, и буду ждать от вас лучей добра
Alex
KlonD90
пошлите пр в sequelize документацию ( там реально беда с ней
KlonD90
Впрочем даже у платного продукта cloudflare балансер беда с документацией
KlonD90
опция есть - а в документации е нету. так еще она и обязательная
KlonD90
nice
Nikita
Ребят, ни у кого ЧИСТО СЛУЧАЙНО нет чатиков по 3д?
Андрей
На сколько плохо возвращать ошибку с сервера в виде "res.status('код').send('Текст').end();"?
🦜
end в конце не нужен вроде, send и так закончит response
🦜
сам только учусь, сейчас профи подойдут, может что то расскажут)
Igor
Коллеги, а есть что-то быстрое - создать тестовое API (которое возможно потом перейдет в нетестовое) аля react-create-app
Cenator 🐈
Hapi, koa
👨🏼💻
Igor
Понял, проще потратить время и написать.
А всякие loopback и т.п.?
ikasymov
Ребята почему многие говорят про асинхронность в ноде словом "одновременно"? Он же с ним не имеет ничего общего, nodejs ничего не делает одновременно
ikasymov
nodejs однопоточный соотвественно он выполняет функции по очередно.
Anonymous
нет возможности строго по завершении одной функции выполнить другую функцию
Anonymous
если ты не юзаешь промисы или колбэки
ikasymov
Anonymous
ikasymov
eventloop так и работает, он в стеке выполняет функции по очередно, а другой процесс соответсвенно добавляет в стек новые.Я имею ввиду в асинхронном, а не асиннхронном все как в остальных языках.Я вообще имею ввиду что в ноде нету одновременности выполнение какой то функции кроме, одновременности того что может выполняться добавление новой функции в стек во время ожидание ответа от предедущего.Просто в ноде экономия времени и ресурса проц не более.Если я не прав поправьте пожалуйста
ikasymov
да
Yar
Многопоточности быть.
ikasymov
https://www.youtube.com/watch?v=_kJeJaARUP4&list=PLDyvV36pndZFWfEQpNixIHVvp191Hb3Gg&index=20
вот тут чувак говорит полный бред
Yar
Эмм..
Kons
ikasymov
он говорит условний Вася запрашивает некую страницу и пока он ждет другие посетители не смогут запрашивать эту страницу потому что интерпитатор nodejs занять
ikasymov
не дословно но примерно так
ikasymov
но там же для каждого хоста создается своя сессия в tcp и т.д или я че то не допонимаю?
Kons
второе :)
Алексей
Yar
автор топовый, нужно просто доразбиратся.
Андрей
Андрей
Никто ещё ответить не может?
Kons
В node.js все запросы принимаются одним запущенным экземпляром приложения. А, например, в PHP каждый запрос приводит к созданию нового экземпляра приложения.
Kons
Андрей