version: "3.9"
services:
server:
container_name: "server"
build: ./
ports:
- "4200:4200"
depends_on:
- mongodb
- elastic
restart: always
links:
- mongodb
- elastic
env_file: .env
mongodb:
container_name: "mongodb"
image: mongo:4.4.7-focal
restart: always
volumes:
- mongodb:/data/db
environment:
- MONGO_INITDB_ROOT_USERNAME=$MONGODB_ROOT_USER
- MONGO_INITDB_ROOT_PASSWORD=$MONGODB_ROOT_PASSWORD
ports:
- "27017:27017"
env_file: .env
elastic:
container_name: "elastic"
image: elasticsearch:7.13.4
restart: always
environment:
- discovery.type=single-node
- cluster.name=elastic-crm
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- ELASTIC_USERNAME=$ELASTIC_USERNAME
- ELASTIC_PASSWORD=$ELASTIC_PASSWORD
ports:
- "9200:9200"
volumes:
- elastic:/usr/share/elasticsearch/data
env_file: .env
volumes:
mongodb:
elastic:
links
присоединяем два этих сервиса к бекенду, а в бекенде вместо localhost используем имя сервиса. Ну и порты тоже указываем правильные.connect("mongodb://mongodb:27017/");
const requestListener = function (req, res) {
res.setHeader("Content-Type", "application/json");
switch (req.url) {
case "/books":
res.writeHead(200);
res.end("hello world");
break
}
}
ProductDTO[]
вместо создания отдельного DTO? Это тоже будет работать, а ещё лучше врубите transform: true
в конфигурации валидации в вашем приложении, чтобы наверняка, так сказать.app.ts
ValidationPipe
для каждого Create
эндпоинта?app.useGlobalPipes(new ValidationPipe({ transform: true }));
@Body() productsDto: ProductDto[]
/items
@Controller('/items')
getAll
, и делаете это с помощью декоратора @Response, но в Nest, как только вы получаете доступ к объекту ответа, всё управление ответом передаётся вам, а значит вы должны вызвать res.end()
или res.json()
чтобы завершить запрос.@Param
, а параметры это вообще про другое — вам нужен @Body()
Try ubuntu
, далее в терминале выполни этоsudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair
boot repair
из меню приложений, а дальше всё сводится к одному клику....
- spread/rest оператор. spread
раскрывает массив в список аргументов, но также например можно использовать для расширения массивов.const arr = [1, 2, 3]
func.apply(...arr) // [1, 2, 3] -> 1, 2, 3
const arr = [1, 2, 3]
const arr2 = [...arr, 4, 5]
rest
наоборот собирает аргументы в массив.function func(...args) {
for (let arg of args) console.log(arg)
}
const obj = {a: 10, b: 20}
const obj2 = {...obj} // {a: 10, b: 20}