我只得到所有数据的一个时间
我创建与node.js的REST API不express.js框架,数据库我用FS。我在与get方法问题。所有其他方法做工精细。当我试图从目录中的所有JSON文件,我可以搞定一切只有一次,第二次和所有其他时间,没有任何反应,甚至没有一个错误,它只是停留几分钟,在那之后我在Chrome得到这个错误:网:: ERR_EMPTY_RESPONSE,这在Firefox:类型错误:“NetworkError试图获取资源的时候。”获取一个JSON文件工作正常。我认为,问题出在后端。因为我有邮递员同样的问题。
我使用节点10.14.1。据我了解,当我试图从目录中第二次的所有文件,我server.js文件不发送任何响应。和APP在server.js线64 chosenHandler之前停止。
获取处理程序:
// Resources - get
// Required data: none
// Optional data: ID
handlers._resources.get = (data, callback) => {
// Check that the ID is valid
checkId(data.queryStringObject.id)
if (resourceDBId) {
// Lookup the resource
_data.read('resources', resourceDBId, (err, data) => !err &&
data ? callback(ok, data) : callback(notFound, {Error: 'User doesn\'t exist'}))
} else {
_data.readAll('resources', (err, data) => {
if (!err && data) {
if (data.last) {
resourcesData.push(data.data)
callback(ok, resourcesData)
}
if (!data.last) resourcesData.push(data.data)
} else callback(internalServerError, {Error: 'Can\'t get all resources'})
})
}
}
所有的代码是在这里:
回答如下:在lib / data.js文件ReadAll方法则需要初始化我。因为我是用不确定的,它被认为是全局变量i,并且不进入循环,并且回调不工作,所以反应是不可能的。
我建议你如下更改。
lib.readAll = (dir, callback) => {
fs.readdir(lib.baseDir + dir, (err, data) => {
if(!err && data) {
let i = 0;
while(i < data.length) {
if (i < data.length - 1) {
fs.readFile(lib.baseDir + dir + '/' + data[i], 'utf-8', (err, content) => {
let parsedContent = helpers.parseJsonToObject(content)
err ? callback(err, content) : callback(false, {last: false, data: parsedContent})
})
} if (i === data.length - 1) {
fs.readFile(lib.baseDir + dir + '/' + data[i], 'utf-8', (err, content) => {
let parsedContent = helpers.parseJsonToObject(content)
err ? callback(err, content) : callback(false, {last: true, data: parsedContent})
})
}
i++
}
} else callback(err, data)
})
}