我正在尝试运行一个简单的脚本,该脚本将使用 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/