我使用node.js和express.js来构建一个非常简单的应用程序。我想读取一个目录的内容,当我浏览到localhost:3000/names
时,应用程序将打印一个内容数组到网页,除了我选择的内容。这里是我的代码:为什么我的Node应用程序在每次刷新后都继续发送数据?
const express = require('express');
const fs = require('fs');
const app = express();
const port = 3000;
let result = [];
app.get('/names', (req, res) => {
const printNames = (err, file) => {
file.forEach(e => {
if (e !== 'john') {
result.push(e);
}
});
res.send(result);
};
fs.readdir('./home', printNames);
});
app.listen(port,() => {
console.log('Listening on port 3000');
});
该应用程序以我想要的方式工作,但有一个小错误。每次刷新页面时,应用程序都会将相同的数组内容添加到现有数组中。每次刷新后,我的数组都会越来越大。我希望应用程序将数组发送到页面,并在刷新时保持不变。我没有丝毫的想法,为什么我的应用程序是这样做的。有人可以向我解释为什么它的行为是这样的,那么解决这个问题的正确步骤是什么?
结果是一个全局变量,所以它会活到服务器停止。在每一次刷新时,get请求都会触发您的应用程序,因此它会一直添加到结果数组中。 – Malice