您好我编写了一个具有递归函数的脚本,该函数采用路径并解析目录结构。该脚本按预期工作,但它不会自行终止。脚本是用Javascript编写的,它使用了诸如fs(文件系统)和路径之类的NodeJs模块。
我的代码:
var parseDirectory = function(currPath, tags, func){
var util = util || require('./util');
var fs = fs || require('fs');
var path = path || require('path');
if(!util.fileExist(currPath)) {
throw new Error('Path is invalid, it does not exist.');
}
//get the stat and do operation according to file type
var stat = fs.statSync(currPath);
//if directory
// - get all files inside the directory
// - push the currPath in tags
// - call parseDirectory for each file
// - pop from the tags array
if(stat.isDirectory()) {
var files = fs.readdirSync(currPath);
var fs = fs || require('fs');
tags.push(path.parse(currPath).name);
files.forEach(function(file) {
parseDirectory(path.join(currPath,file),tags,func);
});
tags.pop();
} else if(stat.isFile()) {
func(currPath,tags);
} else {
throw new Error('Path is not a file or Directory');
}
}
//connect to db
var mongoose = mongoose || require('mongoose');
mongoose.connect('mongodb://localhost:27017/iconrepo');
// a sample call to parseDirectory
parseDirectory('icon/png/',[],function(filePath, tags) {
var path = path || require('path');
var fs = fs || require('fs');
var File = require('./models/file');
var stat = fs.statSync(filePath);
var file = new File({
name : path.parse(filePath).name,
type : path.extname(filePath),
size : stat.size,
tags : tags,
path : filePath
});
//console.log(file);
//file.save(function(err) {
// if(err) {
// throw new Error(err);
// }
// console.log('Added ', filePath);
//});
console.log('Exiting Callback for filePath',filePath);
});
console.log('Last statement of the script');
File.js
// a file schema file
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var fileSchema = new Schema({
name: String,
type: String,
size: {type: Number},
tags: [String],
path: String
});
module.exports = mongoose.model('File',fileSchema);
// a file schema file
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var fileSchema = new Schema({
name: String,
type: String,
size: {type: Number},
tags: [String],
path: String
});
module.exports = mongoose.model('File',fileSchema);
任何人都可以指出我正在犯的错误。
答案 0 :(得分:1)
Mongoose建立了一个连接,可以让你的脚本继续运行。
致电mongoose.connection.close()
结束您的脚本。