我是meteor和javascript的新手,我正在尝试让应用程序搜索mp3文件夹,然后将位置和名称添加到集合中。
如果有预先存在的(javascript)方法,请告诉我在哪里可以找到它们。如果您也知道可以通过大气或git repo进行改装,请告诉我。谢谢!
答案 0 :(得分:1)
这是解决您要做的事情的简单方法
mp3list.html:
<head>
<title>MP3 Collection</title>
</head>
<body>
{{> mp3list}}
</body>
<template name="mp3list">
<ul>
{{#each mp3s}}
<li>{{name}}</li>
{{/each}}
</ul>
</template>
mp3list.js
MP3s = new Mongo.Collection('mp3s');
MP3_DIRETORY = '/tmp/mp3';
INTERVAL_MILLISECONDS = 1000;
if (Meteor.isClient) {
Template.mp3list.helpers({
mp3s: function() {
return MP3s.find();
},
});
}
if (Meteor.isServer) {
var fs = Npm.require('fs');
Meteor.setInterval(function() {
var mp3s = fs.readdirSync(MP3_DIRETORY).filter(
function(i) {
return i.substr(i.length - 4) === '.mp3';
}
);
mp3s.forEach(function(i) { MP3s.upsert({name: i}, { $set: {name: i}}); });
}, INTERVAL_MILLISECONDS);
}
为了扩展这一点(即递归目录搜索),答案here提供了更多细节。
但是,如果您的应用扫描大量文件,这种简单的方法将无法扩展。我建议然后查看基于ionotify的解决方案(假设linux,其他操作系统将具有类似的API)。 watchr
也许是一个不错的选择(我没有使用它,或者inotify ++)。