你好,
我将 Promise 用于初始化节点项目。
我想在我的 MongoDb 中插入我的 git 存储库上所有分支上的文件名。
我使用 nodegit 来操作 repo,对于每个 nodegit 方法,返回都是一个 Promise。但我需要循环所有分支引用以获取所有文件和分支名称。
之后,我可以准备我的数组以在下一个承诺中插入数据库。
代码如下:
// List all branchs
.then((branchs) => {
let promises = [];
let allBranchFiles = [];
branchs.map((branch) => {
let q = repo.checkoutBranch(branch, config.checkoutOpts)
.then(() => repo.getCurrentBranch())
.then((ref) => {
return new Promise((resolve, reject) => {
fs.readdir('./myRepo/', (err, files) => {
files.map((file) => {
allBranchFiles.push({fileName: file, branch: branch});
});
resolve(allBranchFiles);
});
});
});
promises.push(q);
});
return Promise.all(promises);
})
该代码通过两种方式完成:
- 第一的 :
{ Error: the index is locked; this might be due to a concurrent or crashed process at Error (native) errno: -14 }
我确信在这个 repo 中没有其他进程使用 git!
- 第二 :
我的所有文件都为“分支”获得相同的值,但它们位于不同的分支上。
谢谢你们帮助我!
赛亚。