javascript - 从 Meteor 服务器插入数据库不起作用

标签 javascript mongodb meteor cron x-ray

我正在尝试运行一个简单的脚本,该脚本将使用 X 射线抓取一些数据并将其插入到我的事件集合中。

    if (Meteor.isServer) {
      var Xray = Meteor.npmRequire('x-ray');
      var xray = new Xray({
        version: "2.0.3"
      });

      xray('http://www.events12.com/seattle/january/', '.qq', [{
        title: '.title',
        date: '.date',
        link: 'a @href',
        allContent: '@html'
      }])(function(err, content) {

        for (var i = 0; i < content.length; i++) {
          (function() {

            console.log(i);

            var newEvent = {
              owner: 'me',
              name: content[i].title,
              date: content[i].date,
              url: content[i].link,
              createdAt: new Date(),
              description: 'none'
            };

            console.log(newEvent);

            Events.insert(newEvent, function(err, data) {
                console.log(err);
                console.log(data);
            });


          })();
        }
      });
    }

接收内容的 X 射线回调将所有抓取的数据存储在对象数组中,每个对象都有多个属性。当我尝试将此数据插入到我的 Events 集合中时,for 循环迭代一次然后退出,但没有显示错误。如果我删除 Events.insert() 循环将一直迭代。

我错过了什么?执行此类任务的正确方法是什么?

最佳答案

在任何 Meteor 纤维之外调用 Events.insert()。添加 Meteor.bindEnvironment() 并将整个函数作为回调传入可以解决此问题。

关于javascript - 从 Meteor 服务器插入数据库不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34939456/

相关文章:

javascript - 监听模板外部的事件,但仅当模板存在时

javascript - 如何在 snap.svg 中迭代组的元素/子元素?

javascript - 为什么这些 Knockout 订阅会通知根本不应该订阅的对象

mongodb - 将 Mongo shell 脚本转换为 SpringData/Java

mongodb - 在 Golang 的两个不同结构字段中映射 Mongo _id

javascript - Meteor 中的 ExecCommand 不起作用

javascript - 将 Prop 传递给给定组件 react 的 Prop

javascript - 在 Angular JS 中显示/隐藏通用模式的最佳方式

node.js - 错误 : connect ETIMEDOUT 54. 162.26.95:17185

javascript - 在 meteor 中实现更多负载的最佳实践