Ответы пользователя по тегу Node.js
  • Какую сейчас использовать облачную БД для nodejs + react?

    squadbrodyaga
    @squadbrodyaga
    帆は風を変えた
    Я использую Supabase, можно создать два бесплатных проекта. Есть встроенная авторизация и прочие плюшки
    Ответ написан
    Комментировать
  • Как ускорить работу моего кода?

    squadbrodyaga
    @squadbrodyaga Автор вопроса
    帆は風を変えた
    На основе ответа Rsa97, написал вот такой код.

    const deleted = [], updated = []
    for (let oldidx = 0, newidx = 0; oldidx < current_data.length || newidx < new_data.length;) {
      
      if (newidx >= new_data.length || current_data[oldidx]?.id < new_data[newidx].id) {
        deleted.push(current_data[oldidx])
        oldidx++
        continue
      }
      
      if (oldidx >= current_data.length || current_data[oldidx].id > new_data[newidx]?.id || !lodash.isEqual(new_data[newidx], current_data[oldidx])) {
        updated.push(new_data[newidx])
        oldidx++
        newidx++
        continue
      }
      
      oldidx++
      newidx++
    }


    Мне было важно, чтобы обновлённые и добавленные данные были в одном массиве,
    поэтому я сделал именно так. Сейчас время работы ~1.5 секунды
    Еще появился вариант использовать свой метод, но заменить find на бинарный поиск,
    но я его не тестировал.
    Ответ написан
    Комментировать
  • Почему axios.default показывает undefined?

    squadbrodyaga
    @squadbrodyaga Автор вопроса
    帆は風を変えた
    Решил проблему.

    Проблема была в том, что при таком использовании
    const axios = require('axios').default
    VS Code показывает подсказки, но при запуске кода показывает ошибки.

    А если импортировать так
    const axios = require('axios')
    то VS Code не показывает подсказки, но код будет работать
    Ответ написан
    Комментировать
  • Как в NodeJS разбить .CSV файл?

    squadbrodyaga
    @squadbrodyaga Автор вопроса
    帆は風を変えた
    // npm i csv-parser
    // npm i csv-writer
    
    const fs = require('fs')
    const csvParser = require('csv-parser')
    const createCsvWriter = require('csv-writer').createObjectCsvWriter
    
    const video = []
    fs.createReadStream('./ссылка на файл.csv')
      .pipe(csvParser())
      .on('data', data => video.push(data))
      .on('end', () => {
    
        const movies = video.filter(video => video.TYPE == 'movie')
        const serals = video.filter(video => video.TYPE == 'serials')
    
        createCsvWriter({
          path: 'папка/названиефайла.csv',
          header: Object.keys(movies[0]).map(key => ({ id: key, title: key })) // не важно
        }).writeRecords(movies)
    
        createCsvWriter({
          path: 'папка/названиефайла.csv',
          header: Object.keys(serals[0]).map(key => ({ id: key, title: key }))
        }).writeRecords(serals)
      })
    Ответ написан
    Комментировать
  • Можно ли использовать req.query в POST запросе?

    squadbrodyaga
    @squadbrodyaga Автор вопроса
    帆は風を変えた
    Ошибка была в HTML форме, мне нужно было убрать /signup в action
    <form class="signup-form" action="" method="POST">
    Сейчас вроде всё работает.

    P.S Спасибо Михаилу из комментариев
    Ответ написан
    Комментировать
  • Как отправить сообщение самому себе на Socket.io?

    squadbrodyaga
    @squadbrodyaga Автор вопроса
    帆は風を変えた
    Нашел ответ. Оказывается это легко. Просто вместо io.emit()
    нужно писать socket.emit()
    Ответ написан
    Комментировать
  • Дублируются сообщения в чате (Socket.io), что делать?

    squadbrodyaga
    @squadbrodyaga Автор вопроса
    帆は風を変えた
    Решил проблему. Нужно было создать кое-какой Middleware
    const session = require('express-session')
    const express = require('express')
    const app = express()
    
    const server = require('http').Server(app)
    const io = require('socket.io')(server)
    
    const sessionMiddleware = session({
        secret: '...',
        saveUninitialized: false,
        resave: false,
        store: ...
    })
    
    app.use(sessionMiddleware)
    io.use((socket, next) => {
        sessionMiddleware(socket.request, {}, next)
    })
    
    io.on('connect', socket => {
    
        const session = socket.request.session
        
        // Используем примерно так:
        session.user.login
        
    })
    Ответ написан
    Комментировать