Как сохранить значение функции в переменной serverjs server get-folder-size - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь найти размер папки (содержимого), после поиска выяснил, что лучше всего использовать пакет get-folder-size. поэтому следующий код рассказывает остальную часть истории:

const express = require('express');
const app = express();
const getSize = require('get-folder-size');
var reqSize = 0;
// This serves static files from the specified directory
app.use(express.static(__dirname));

getSize('videos', (err, size) => {
    if (!err) {
        console.log(size + ' bytes');
        console.log((size / 1024 / 1024).toFixed(2) + ' MB');
    } else {
        throw err;
    }
});

app.get('/test', (req, res) => {
    //res.sendFile(__dirname + '/views/test.html',);
    res.json({ title: 'zaffar', message: 'abbas', size: reqSize });
});

const server = app.listen(3001, () => {
    const host = server.address().address;
    const port = server.address().port;
    console.log('App listening at https://%s:%s', host, port);
});

getSize() печатает правильный размер папки в консоли, я изо всех сил стараюсь сохранить ее в переменной, чтобы я мог переслать / передать эту переменную в index.html, используя JavaScript для извлечения подробности с сервера. html файл [ссылка для извлечения подробностей с сервера] [1]. Я хочу сохранить этот полученный размер в переменную сейчас, любая помощь / мысли, пожалуйста ....?

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Почему бы просто не вызвать getSize в маршруте app.get ('/ test')?

const express = require('express');
const app = express();
const getSize = require('get-folder-size');
var reqSize=0;

app.get('/test',(req,res)=>{
    getSize("videos", (err, size) => {
        if(!err && size > 0){
            reqSize = (size / 1024 / 1024).toFixed(2) + ' MB';
        }
        res.json({title:"zaffar",message:"abbas", size:reqSize});
    });
});
0 голосов
/ 22 января 2019

Расчет размера папки является асинхронным процессом, посылы и обратные вызовы используются при выполнении асинхронных процессов.

В этом случае я использую обещания, чтобы получить размер папки после окончания расчета.

Если вы не знаете, как работают обещания, я оставлю эту ссылку, чтобы вы могли читать и понимать. Обещания .

Функция getSize() - это та, которая использует обещания, вычисление выполняется асинхронно, а по окончании возвращает значение (resolve) или ошибку (reject).

function getSize() {
    return new Promise((resolve, reject) => {
        require('get-folder-size')('videos', (err, size) => {
            if (err) return reject(err);
            resolve({
                sizeBytes: size + ' bytes',
                sizeMB: (size / 1024 / 1024).toFixed(2) + ' MB',
            });
        });
    });
}

Здесь мы получаем значение обещания, чтобы получить данные, которые необходимо сделать таким образом, это называется разрешение обещания .

app.get('/test', (req, res) => {
    //res.sendFile(__dirname +'/views/test.html',);
    getSize().then((data) => {
        const { sizeMB } = data;
        res.json({ title: 'zaffar', message: 'abbas', size: sizeMB });
    });
});

Здесь у вас есть все изменения, примененные к вашему коду:

const express = require('express');
const app = express();

// This serves static files from the specified directory
app.use(express.static(__dirname));

function getSize() {
    return new Promise((resolve, reject) => {
        require('get-folder-size')('videos', (err, size) => {
            if (err) return reject(err);
            resolve({
                sizeBytes: size + ' bytes',
                sizeMB: (size / 1024 / 1024).toFixed(2) + ' MB',
            });
        });
    });
}

app.get('/test', (req, res) => {
    //res.sendFile(__dirname +'/views/test.html',);
    getSize().then((data) => {
        const { sizeMB } = data;
        res.json({ title: 'zaffar', message: 'abbas', size: sizeMB });
    });
});

const server = app.listen(3001, () => {
    const host = server.address().address;
    const port = server.address().port;
    console.log('App listening at https://%s:%s', host, port);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...