Создание папок с использованием значений объектов - PullRequest
1 голос
/ 01 ноября 2019

Я изучаю Nodejs и пытаюсь создать папки для каждого нового пользователя. Папка будет связана с именем пользователя (при нажатии на нее откроется папка / ftp). Я использую интерфейс Admin-bro.

Вот объект пользователя.

const { model } = require("mongoose");

const User = model("User", {
  name: String,
  surname: String,
  age: Number,
  email: String,
  description: String
});

module.exports = User;

Маршрутизатор пользователя:

const { Router } = require('express')
const paginate = require('../services/paginate.service')
const User = require('../models/user.model')

const dir = require('../routers/ftp')
const router = new Router()

const serializer = (user) => {
  return user.toObject({ versionKey: false })
}

router.get('/', async (req, res) => {
  const users = await paginate(User.find({}), req)
  res.send(users.map(serializer))
})

router.post('/', async (req, res) => {
  const user = await new User(req.body.user).save()
  res.send(serializer(user))

})

module.exports = router

Я понятия не имею, как создать папку для каждого нового пользователя, которого я добавляю, передавая name_surname в качестве имени папки. Я пытался создать маршрутизатор, но не смог.

Это то, что я пытался:


"use strict";
module.exports = function(app) {
  const fs = require("fs");
  const path = require("path");
  const multer = require("multer");

  const storage = multer.diskStorage({
    desctination: function(req, file, cb) {
      const uploadDir = path.join(__dirname, "..", "..", `${Date.now()}`);
      fs.mkdirSync(uploadDir);
      cb(null, uploadDir);
    },
    filename: function(req, file, cb) {
      cb(null, file.originalname);
    }
  });

  const upload = multer({ storage });
  const controller = require("../routers/createDir");


};

PS: нет контроллера, так как я не знаю, что делать.

Пожалуйста, дайте мне совет или ссылку, где я могу узнать, как это делается. Спасибо

Ответы [ 2 ]

0 голосов
/ 01 ноября 2019

Я хочу передать имя пользователя или идентификатор в папку и создать его динамически, а не вручную. что-то вроде этого

const multer = require("multer");
const storage = multer.diskStorage({
  destination: (req, file, cb) => {
    const { userId } = req.body;
    const dir = `../uploads/${userId}`;
    fs.exists(dir, exist => {
      if (!exist) {
        return fs.mkdir(dir, error => cb(error, dir));
      }
      return cb(null, dir);
    });
  },
  filename: (req, file, cb) => {
    const { userId } = req.body;
    cb(null, `UserId-${userId}-Image-${Date.now()}.png`);
  }
});

const upload = multer({ storage });

0 голосов
/ 01 ноября 2019

Пользователь mkdrp пакет модуля узла

var mkdirp = require('mkdirp');

mkdirp('/tmp/foo/bar/baz', function (err) {
  if (err) console.error(err)
  else console.log('pow!')
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...