node.js - Node js App显示文件夹文件
问题描述
我正在尝试显示文件夹中的文件列表。我的文件夹结构如下
发票 1. 错误 2. 已处理 3. 未处理
我已经为我在我的 html 页面上调用的相同创建了节点 api。相同的代码如下
const fs = require('fs');
var express = require('express');
var cors = require('cors');
var app = express();
app.use(cors());
app.use(express.static(__dirname));
var flength;
var filename;
var currentFile;
var items = [];
var dir1 = 'Invoices';
var filepath = [];
var readFolder = function(dir1) {
var countt = function(filename) {
var currentFile = dir1 + '/' + filename;
fs.readdir(currentFile, (err, files) => {
flength = files.length;
var fileArrayList = [];
for (var f in files) {
var record = {
filename: files[f],
filepath: dir1 + '/' + filename + '/' + files[f]
}
fileArrayList.push(record);
}
items.push({
'file': filename,
'count': flength,
'files': fileArrayList
});
});
}
var ReadFirst = function(dir1) {
fs.readdir(dir1, (err, files) => {
for (var i in files) {
var filename = files[i];
var currentFile = dir1 + '/' + filename;
var stats = fs.statSync(currentFile);
if (stats.isDirectory()) {
countt(filename);
}
}
});
}
ReadFirst(dir1);
}
setTimeout(function(str1, str2) {
readFolder(dir1);
}, 1000);
app.get('/FileCount', function(req, res) {
res.send(items);
});
app.listen(4000);
console.log('Listening on port 4000');
当我从任何文件夹添加或删除文件时,它不会反映在我的 html 页面上。需要帮助。
谢谢你。
解决方案
发生这种情况是因为您实现这一点的方式。
您的客户端(HTML 页面)向服务器 (NodeJS) API 请求一些数据。在这种情况下,它是文件夹中的文件列表。服务器根据当时的文件状态(加上Δ)发送响应。
您在 HTML 页面中显示这些结果。现在,您的 HTML 页面和后端服务器之间没有实时链接。这意味着在此之后发生的任何更改都不会自动反映在页面中。
你可以在这里做两件事:
- 间隔几秒钟后重复调用您的 API。(如果您使用的是 AngularJS,请查看
setTimeout
函数。 - 使用套接字进行实时链接。这里有一份很好的文档: https ://loopback.io/doc/en/lb2/Realtime-socket-io.html
- 间隔几秒钟后重复调用您的 API。(如果您使用的是 AngularJS,请查看
这更多是一个设计问题,您的 NodeJS API 看起来不错。
推荐阅读
- ios - ld:未找到架构 x86_64(领域)的符号
- php - error_reporting(E_ALL) 失败,没有日志或错误消息
- python - 尝试在 pip 的帮助下安装 python 包
- ios - 在 iOS 中调试时推送 viewController 不起作用
- excel - 合并后用工作簿名称命名工作表?
- python - python中声明方法(&self)的问题
- oracle12c - OBIEE 12c。在具有 XML 权限的标题中创建自定义链接
- ssl - 如何识别证书未知错误背后的原因
- javascript - 无法从 Promise 中检索数据
- kubernetes - 如何将 ConfigMap 配置与 Helm NginX Ingress 控制器一起使用 - Kubernetes