M
M
Meri_me2021-08-31 22:03:11
Node.js
Meri_me, 2021-08-31 22:03:11

How to properly organize application structure in Node js? Can you show or suggest how to do it?

var express = require('express')
var bodyParser = require('body-parser')
var fs = require('fs')

var app = express()
var jsonParser = bodyParser.json()

app.use(express.static(__dirname + '/public'))
// получение списка данных
app.get('/api/users', function (req, res) {
  var content = fs.readFileSync('users.json', 'utf8')
  var users = JSON.parse(content)
  res.send(users)
})
// получение одного пользователя по id
app.get('/api/users/:id', function (req, res) {
  var id = req.params.id // получаем id
  var content = fs.readFileSync('users.json', 'utf8')
  var users = JSON.parse(content)
  var user = null
  // находим в массиве пользователя по id
  for (var i = 0; i < users.length; i++) {
    if (users[i].id == id) {
      user = users[i]
      break
    }
  }
  // отправляем пользователя
  if (user) {
    res.send(user)
  } else {
    res.status(404).send()
  }
})
// получение отправленных данных
app.post('/api/users', jsonParser, function (req, res) {
  if (!req.body) return res.sendStatus(400)

  var userName = req.body.name
  var userAge = req.body.age
  var user = { name: userName, age: userAge }

  var data = fs.readFileSync('users.json', 'utf8')
  var users = JSON.parse(data)

  // находим максимальный id
  var id = Math.max.apply(
    Math,
    users.map(function (o) {
      return o.id
    })
  )
  // увеличиваем его на единицу
  user.id = id + 1
  // добавляем пользователя в массив
  users.push(user)
  var data = JSON.stringify(users)
  // перезаписываем файл с новыми данными
  fs.writeFileSync('users.json', data)
  res.send(user)
})
// удаление пользователя по id
app.delete('/api/users/:id', function (req, res) {
  var id = req.params.id
  var data = fs.readFileSync('users.json', 'utf8')
  var users = JSON.parse(data)
  var index = -1
  // находим индекс пользователя в массиве
  for (var i = 0; i < users.length; i++) {
    if (users[i].id == id) {
      index = i
      break
    }
  }
  if (index > -1) {
    // удаляем пользователя из массива по индексу
    var user = users.splice(index, 1)[0]
    var data = JSON.stringify(users)
    fs.writeFileSync('users.json', data)
    // отправляем удаленного пользователя
    res.send(user)
  } else {
    res.status(404).send()
  }
})
// изменение пользователя
app.put('/api/users', jsonParser, function (req, res) {
  if (!req.body) return res.sendStatus(400)

  var userId = req.body.id
  var userName = req.body.name
  var userAge = req.body.age

  var data = fs.readFileSync('users.json', 'utf8')
  var users = JSON.parse(data)
  var user
  for (var i = 0; i < users.length; i++) {
    if (users[i].id == userId) {
      user = users[i]
      break
    }
  }
  // изменяем данные у пользователя
  if (user) {
    user.age = userAge
    user.name = userName
    var data = JSON.stringify(users)
    fs.writeFileSync('users.json', data)
    res.send(user)
  } else {
    res.status(404).send(user)
  }
})

app.listen(3000, function () {
  console.log('Сервер ожидает подключения...')
})

Answer the question

In order to leave comments, you need to log in

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question