javascript - Meteor JS - 动态扫描文件夹并添加到集合中

标签 javascript node.js meteor

我是meteor 和javascript 的新手,我正在尝试让应用程序搜索mp3 文件夹,然后将位置和名称添加到集合中。

如果有预先存在的(javascript)方法,请告诉我在哪里可以找到它们。如果您还知道有哪些内容可以从atmospherejs 或git 存储库进行改造,也请告诉我。谢谢!

最佳答案

这是解决您想要做的事情的简单方法

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++)。

关于javascript - Meteor JS - 动态扫描文件夹并添加到集合中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32554347/

相关文章:

javascript - 简单的 Javascript 代码在 Chrome 和 Safari 中不起作用

javascript - For 循环中的数组项中的 ParseQuery

javascript - 如何在 gulp 任务中运行 shell 命令并检测它何时完成?

Node.js套接字.io : TypeError Object() { [native code] } has no method 'assign'

javascript - 从 Meteor 中的 onCreated 访问助手

javascript - 如何设置 Meteor Insert AutoForm 将数据插入集合?

javascript - 奥斯特里奥 :files & Meteor Remove File

javascript - 单击按钮时 RadContextMenu 关闭

php - PHP 和 JavaScript 中的字符串压缩

异步加载的 Node.js 和 Express 3 : Set app. 局部变量