Size: a a a

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

2020 April 27

GB

Green Bear in Node.js — русскоговорящее сообщество
Envy
Так?
const req = { body: {a: 1, b: 2} }
undefined
const form = {...req.body}
undefined
form
{a: 1, b: 2}
По идее должно вот так работать
   const form = {
     ...[{name, checklist, user_id, score} = req.body]
   }

Но не работает
источник

IS

Ivan Sacura in Node.js — русскоговорящее сообщество
всем привет не могу понять почему не закрывается соединение между клиентом и сервером. есть клиент который отсылает запрос на сервер и есть сервер который отвечает клиенту и по идее всё соединение должно закрываться. вот код клиентаconst http = require('http')

const data = JSON.stringify({
   name: 'user1'
})

const options = {
   hostname: 'localhost',
   port: 4000,
   path: '/ssp',
   method: 'POST',
   headers: {
       'Content-Type': 'application/json',
       'Content-Length': data.length
   }
}

const req = http.request(options, res => {
   //console.log(statusCode: ${res.statusCode})

   res.on('data', d => {
       console.log(d.toString())
       //process.stdout.write(d)
       res.on('end', d => {
           console.log('1111')
           //process.stdout.write(d)

       })
   })


})

req.on('error', error => {
   console.error(error)
})

req.write(data)
req.end()


сервер

const http = require('http');
const serverPort = 4000;
const min = 5;
const max = 10;
let arr = [];

http.createServer(function (request, response) {
   if(request.method === "POST") {
       if (request.url === "/ssp") {
           let requestBody = '';
           request.on('data', function(data) {
               requestBody += data;
               console.log(requestBody)
           });
           request.on('end', function() {
               for (let i = 0; i < 15; i++) {
                   let randomPrise = Math.random() + getRandomFloat(min, max);
                   let price = Number(randomPrise.toFixed(2));
                   if (price > max) {
                       i = i - 1;
                   } else {
                       let objToSend = {name: i, price: price};
                       let sendStr = ${objToSend.name}|||${objToSend.price};
                       const data = JSON.stringify({
                           sendStr
                       })
                       const options = {
                           hostname: 'localhost',
                           port: 5000,
                           path: '/dsp',
                           method: 'POST',
                           headers: {
                               'Content-Type': 'application/json',
                               'Content-Length': data.length
                           }
                       }
                       const req = http.request(options, res => {
                           res.on('data', d => {
                               arr = [];
                               let sobakaArr = d.toString().split('@@@')
                               sobakaArr.forEach(element => {
                                   let slashData = element.split('|||')
                                   let toArr = {name: slashData[0], prise: slashData[1]}
                                   let arrleng = arr.push(toArr)
                               })
                               response.writeHead(200, {'Content-Type': 'text/html'}).write(Viner());

                           })
                       })

                       req.on('error', error => {
                           console.error(error)
                       })
                       req.write(data)
                       req.on('end', () => {
                           console.log('No more data in response.');
                       });
                       //req.end()

                   }
               }
           });
       }
   }
источник

DC

Dmitry Croft in Node.js — русскоговорящее сообщество
Юрий Семёнов
а что за пагинация без ofset limit? page size?
Я имел ввиду пагинацию и прямое использование offset и  limit. Пагинация подразумевает, что используются страницы для навигации. Вот вопрос, это в API вообще есть смысл использовать?
источник

АП

Алексей Попов... in Node.js — русскоговорящее сообщество
Ivan Sacura
всем привет не могу понять почему не закрывается соединение между клиентом и сервером. есть клиент который отсылает запрос на сервер и есть сервер который отвечает клиенту и по идее всё соединение должно закрываться. вот код клиентаconst http = require('http')

const data = JSON.stringify({
   name: 'user1'
})

const options = {
   hostname: 'localhost',
   port: 4000,
   path: '/ssp',
   method: 'POST',
   headers: {
       'Content-Type': 'application/json',
       'Content-Length': data.length
   }
}

const req = http.request(options, res => {
   //console.log(statusCode: ${res.statusCode})

   res.on('data', d => {
       console.log(d.toString())
       //process.stdout.write(d)
       res.on('end', d => {
           console.log('1111')
           //process.stdout.write(d)

       })
   })


})

req.on('error', error => {
   console.error(error)
})

req.write(data)
req.end()


сервер

const http = require('http');
const serverPort = 4000;
const min = 5;
const max = 10;
let arr = [];

http.createServer(function (request, response) {
   if(request.method === "POST") {
       if (request.url === "/ssp") {
           let requestBody = '';
           request.on('data', function(data) {
               requestBody += data;
               console.log(requestBody)
           });
           request.on('end', function() {
               for (let i = 0; i < 15; i++) {
                   let randomPrise = Math.random() + getRandomFloat(min, max);
                   let price = Number(randomPrise.toFixed(2));
                   if (price > max) {
                       i = i - 1;
                   } else {
                       let objToSend = {name: i, price: price};
                       let sendStr = ${objToSend.name}|||${objToSend.price};
                       const data = JSON.stringify({
                           sendStr
                       })
                       const options = {
                           hostname: 'localhost',
                           port: 5000,
                           path: '/dsp',
                           method: 'POST',
                           headers: {
                               'Content-Type': 'application/json',
                               'Content-Length': data.length
                           }
                       }
                       const req = http.request(options, res => {
                           res.on('data', d => {
                               arr = [];
                               let sobakaArr = d.toString().split('@@@')
                               sobakaArr.forEach(element => {
                                   let slashData = element.split('|||')
                                   let toArr = {name: slashData[0], prise: slashData[1]}
                                   let arrleng = arr.push(toArr)
                               })
                               response.writeHead(200, {'Content-Type': 'text/html'}).write(Viner());

                           })
                       })

                       req.on('error', error => {
                           console.error(error)
                       })
                       req.write(data)
                       req.on('end', () => {
                           console.log('No more data in response.');
                       });
                       //req.end()

                   }
               }
           });
       }
   }
почему у тебя обработчик на событие end устанавливается в обработчике на событие data?
по ходу тебе сюда: @js_noobs_ru
источник

N

Nikolay in Node.js — русскоговорящее сообщество
Green Bear
По идее должно вот так работать
   const form = {
     ...[{name, checklist, user_id, score} = req.body]
   }

Но не работает
Как видите. так не сработает. Если необходимо вытащить 4 поля из req.body, то топорное перечисление - самое лучшее и простое решение, чем поиск изящного оформления кода.
источник

АП

Алексей Попов... in Node.js — русскоговорящее сообщество
Green Bear
По идее должно вот так работать
   const form = {
     ...[{name, checklist, user_id, score} = req.body]
   }

Но не работает
так и по идее не должно работать
источник

GB

Green Bear in Node.js — русскоговорящее сообщество
Nikolay
Как видите. так не сработает. Если необходимо вытащить 4 поля из req.body, то топорное перечисление - самое лучшее и простое решение, чем поиск изящного оформления кода.
Ну вот так работает const form = [{name, checklist, user_id, score} = req.body][0]
и в принципе достаточно изящно
источник

N

Nikolay in Node.js — русскоговорящее сообщество
Green Bear
Ну вот так работает const form = [{name, checklist, user_id, score} = req.body][0]
и в принципе достаточно изящно
При ининциализации - да. Для вложенных структур - нет.
источник

GB

Green Bear in Node.js — русскоговорящее сообщество
Nikolay
При ининциализации - да. Для вложенных структур - нет.
Я кажется нашел))))

   const form = {
     ...{name, user_id, score} = req.body
   }
источник

GB

Green Bear in Node.js — русскоговорящее сообщество
Nikolay
При ининциализации - да. Для вложенных структур - нет.
но есть одна проблема)))) Деструктурирование все равно создает переменные name, score
источник

N

Nikolay in Node.js — русскоговорящее сообщество
Green Bear
Я кажется нашел))))

   const form = {
     ...{name, user_id, score} = req.body
   }
Так тут чистой воды инициализация
источник

GB

Green Bear in Node.js — русскоговорящее сообщество
Nikolay
Так тут чистой воды инициализация
Просто у меня передаётся куча полей, и я думал можно как то сократить длинную запись при инициализации
но походу что нет
источник

N

Nikolay in Node.js — русскоговорящее сообщество
Green Bear
Просто у меня передаётся куча полей, и я думал можно как то сократить длинную запись при инициализации
но походу что нет
import { get } from 'lodash';

const incomingRequestFieldsMap = {
user_id: 'user_id',
   'deeplyNestedProperty': 'deep.ly.nested.prop[0].erty'
}
const form = {};
for(const fieldName of Object.keys(incomingRequestFieldsMap)) {
   form[fieldName] = get(req.body, incomingRequestFieldsMap[fieldName]);
}
источник

A

Aleksandr in Node.js — русскоговорящее сообщество
Почему вылазит ощибка done() is not a func?
module.exports = taskQueue = queue(async (task, done) => {
 try {
   await task();
   console.log(chalk.bold.magenta('Task completed, tasks left: ' + taskQueue.length() + '\n'));
   done();
 } catch (err) {
   throw err;
 }
}, concurrency);
источник

GB

Green Bear in Node.js — русскоговорящее сообщество
Nikolay
import { get } from 'lodash';

const incomingRequestFieldsMap = {
user_id: 'user_id',
   'deeplyNestedProperty': 'deep.ly.nested.prop[0].erty'
}
const form = {};
for(const fieldName of Object.keys(incomingRequestFieldsMap)) {
   form[fieldName] = get(req.body, incomingRequestFieldsMap[fieldName]);
}
спс, это понятно, просто думал это можно сегодня решить через деструктуризацию
источник

N

Nikolay in Node.js — русскоговорящее сообщество
Green Bear
спс, это понятно, просто думал это можно сегодня решить через деструктуризацию
Вы еще можете обернуть кусок кода с деструктуриизацией в iife, тогда ненужные переменные останутся в ее скоупе
источник

GB

Green Bear in Node.js — русскоговорящее сообщество
Nikolay
Вы еще можете обернуть кусок кода с деструктуриизацией в iife, тогда ненужные переменные останутся в ее скоупе
Попробовал уже) Но чет errors, да и еще хуже выходит, чем copy paste)
источник

IK

Iliya Kobaliya in Node.js — русскоговорящее сообщество
Ребят,почему когда я использую bcrypt  у меня требуется модуль 'Can't resolve 'aws-sdk' 'Его обязательно устанавливать?
источник

V

Victor in Node.js — русскоговорящее сообщество
Iliya Kobaliya
Ребят,почему когда я использую bcrypt  у меня требуется модуль 'Can't resolve 'aws-sdk' 'Его обязательно устанавливать?
1. заходишь на нмп на страницу пакета bcrypt
2. там есть ссылка на гитхаб, переходишь по ней
3. в поиск вбиваешь aws-sdk и смотришь ишьюсы
способ универсальный
источник

IK

Iliya Kobaliya in Node.js — русскоговорящее сообщество
я ярном устанавливаю)
источник