
Vlad
02.10.2017
20:42:18
При этом на фронте у меня есть нужный интерфейс и я не ошибаюсь на фронте, т.к. TS мне подсказывает это

Aleh
02.10.2017
20:42:38
В сущностях самое интересное - публичный интерфейс, а все данные должны быть инкапсулированы
На клиенте вас наоборот интересуют данные, а вот публичный интерфейс ваще не особо

Vlad
02.10.2017
20:44:14
Чего я ожидаю. Хочу описать такую модель для ORM :
import {Entity} from "typeorm";
@Entity()
export class Tag {
@Column()
id: string;
@Column()
name: string;
}
При этом импортить Tag на клиенте и иметь подсказки что если у меня что-то есть Tag[], то в filter у меня доступны только св-ва id & name и они таких то типов

Google

Aleh
02.10.2017
20:44:51

Vlad
02.10.2017
20:45:38
сори с терминами не очень. трогал php Doctrine кажется лет 10 назад когда еще паспорта не было
https://github.com/typeorm/typeorm#creating-and-inserting-a-photo-into-the-database

Aleh
02.10.2017
20:45:48

Vlad
02.10.2017
20:45:50
в моём идеальном мире хотелось бы такого примерно, например
в менее идеальном хотелось бы просто shared-models и хотя бы TS на сервре =)
хоть без ОРМ
но это кажется совсем изи решается
но вспомнился ОРМ вчера часа в 4 ночи, вот я и озадачился
я не смогу получить на сервере то что я кинул выше?
<гуглит dto>
не DTO это как-то сложно
в моём светлом мире за await photoRepository.save(photo); инсерт который я не хочу писать

Google

Vlad
02.10.2017
20:49:18
мир что - сложнее?
то есть в моём случае (у меня все достаточно просто-просто) я делаю запрос, обрабатываю его expressjs-ом например (на данный момент так).
делаю импорт нужной модели и юзаю что-то вроде: xRepository.save(x)
@mkusher ? =)

Aleh
02.10.2017
21:07:05
Сорян, перестал читать. Короче typeorm это оверкилл, просто пошарь папочку между клиентом и сервером, где сложишь типы ответов сервера

Vlad
02.10.2017
21:07:22
да да это будет работать 100%
а ОРМ чем плох?
фигачить селекты как-то не оч?
у меня правда ща вообще nosql. но хочу sqlite хоть какой, чтобы было подобие нормальной структуры.
я

Yury
02.10.2017
21:17:55
@vladsharikov
Странную кашу вы варите, лучше посмотрите в сторону firebase или meteor. TypeScript вам не нужен.

Vlad
02.10.2017
21:18:12
тайпскрипт улучшит dev experience?
почему такие выводы?
вы разобрались в том что я хочу?
Где-то выше описывал проблему.

Yury
02.10.2017
21:19:03
Вы сказали что хотите использовать одни и теже типы на сервере и на клиенте.

Vlad
02.10.2017
21:19:15
Повторюсь. Вот пишу я на firebase что-то. Деплою . Получаю ошибку.
Выясняется что ошибка из-за того что я написал tagsIds, а не tagIds.
На фронте у меня нет таких ошибок, т.к. есть TS. он не даёт заюзать неправильные св-ва. есть IDE, которая благодаря TS понимает какие конкретно свойства есть вот у того с чем я работаю
это первая часть хотелки.

Google

Vlad
02.10.2017
21:20:16
у меня как раз firebase на данный момент.
но оно мне сильно не помогает.
я уже пишу и уже огребаю

Yury
02.10.2017
21:21:20
Не панятна мнэ )))

Vlad
02.10.2017
21:21:27
по-моему TS решит эту проблему. разве нет?
flow еще решит
как непонятно. что вам непонятно?

Yury
02.10.2017
21:22:58
Зачем вы используете модель на клиенте и на сервере?

Vlad
02.10.2017
21:23:03
вот на беке у меня сейчас везде тип any и мне позволено косячить

Yury
02.10.2017
21:23:03
Это все такие разные контексты

Vlad
02.10.2017
21:23:41
Модель. Что есть модель? Что я сейчас использую на клиенте.
export interface DiaryEntry {
$key?: string;
id?: number;
createDate?: {};
date: {};
tags?: Tag[];
message: string;
}
Модели у меня нет на данный момент. И не хочу. Незачем. Есть интерфейс.
Вот чтобы мою хотелку реализовать я могу тупо заимпортить вот это на сервере. Будет работать подсказка по типам.
Решит мою первую проблему, согласны?
Про dev exp
Давайте пример проще:
export interface Tag {
$key?: string;
name: string;
description?: string;
}
?

Yury
02.10.2017
21:25:15
Я видимо не очень фронтендер) Вот и не понимаю, сорян :D

Vlad
02.10.2017
21:25:22
Вот я заимпорчу ровно тот же самый тег на беке - и получу свою хотелку и всё будет работаь. Это всё было про первую часть.

Google

Vlad
02.10.2017
21:25:34
Это вы тролите или правда?
Я дал скрины
Я сказал что у меня есть на фронте и чего хочу получить на беке. Сказал как я это получу.
еще например. в раскрытом списке видим нормальные подсазки.

Yury
02.10.2017
21:27:54
Я видимо таким просто никогда не занимался. У меня либо есть отдельное клиетское приложение, отдельное серверное, они обычно общаются через кучу слоев, фронт вообще не знает о моделях на беке и не должен.
Либо это MEAN типа приложение, где с помощью магии дается возможность взаимодействовать как с одним приложением.

Vlad
02.10.2017
21:28:34
вот я ща просто упороться чуть чуть решил
и подумал что можно было бы шарить эти интерфейсы между сервером и клиентом
грех не пошарить. у меня всё на JS. почему нет? вернее фронт у меня на TS. и я понял что зачем огребать ошибки на беке, которые можно не огребать? и которые я не огребаю на фронте.

Denis
02.10.2017
21:29:23
>Либо это MEAN типа приложение, где с помощью магии дается возможность взаимодействовать как с одним приложением
у MEAN все как у тебя, никакой магии там нет

Vlad
02.10.2017
21:29:23
это прям изи решается через шаринг вот этих вот интерфейсов.

Denis
02.10.2017
21:29:27
может ты про Метеор?
это всё же немного другое

Yury
02.10.2017
21:29:43
Тогда смотрим MEAN(mean, meteor)

Denis
02.10.2017
21:29:47
в правильном MEAN ты монгу в принципе можешь заменить на что угодно
и ангуляр тоже
просто это такой стек технологий который удобно работают друг с другом

Дмитрий
02.10.2017
21:30:18
И сам MEAN

Denis
02.10.2017
21:30:22
да
типа монгу на sql, express на koa, angular на react

Google

Denis
02.10.2017
21:31:02
ну и нода это последняя инстанция

Yury
02.10.2017
21:32:07
Да - неправильно сказал, MEAN это другое
@vladsharikov
http://img-fotki.yandex.ru/get/6700/35340376.f9/0_facfe_46f0772c_orig.jpg

Vlad
02.10.2017
21:35:05
рукалицо
серьезно?
что зачем? =)
у меня есть скорее вопрос: зачем стрелять себе в ноги, когда можно не стрелять?

Yury
02.10.2017
21:36:11
Для фронта интерфейс это api сервера
а вы хотите сделать клиент слой для обращения к серверным моделям на фронте?


Vlad
02.10.2017
21:37:05
я вам одно, вы мне другое
забудьте про typeorm
или orm
или вотевер
еще раз.
const promises = diaryEntries.map(diaryEntry =>
getTagsByIds(diaryEntry.tagIds, req.user.uid)
);
Есть вот этот код. Вчера тут была ошибка: diaryEntry.tagsIds, req.user.uid tagsIds.
должно быть tagIds.
внимание вопрос: почему я по вашему не сделаю такую ошибку на своем фронте, где я использую typescript?
я думаю вот почему. на фронте у меня тайп скрипт и у меня есть описание интерфейса: DiaryEntrySet. И там четко сказано, что должно быть поле tagIds типа string[].
не tagsIds, а tagIds. Теперь когда я написал некий нерабочий код ts-compiler мне скажет “эй друг, тут у тебя косяк, я не собирусь”
это всё про фронт.
еще вопрос: зачем мне огребать эти детские проблемы js-ные , когда я могу в 2 команды прикрутить tsc к моему бекенду (он на javascript, firebase) и написать:```const promises = diaryEntries.map(diaryEntry: DiaryEntrySet =>
getTagsByIds(diaryEntry.tagIds, req.user.uid)
);```
Ипортировав при этом DiaryEntrySet откуда-то из общей части