从流星服务器插入分贝服务器不工作
问题描述:
我想运行一个简单的脚本,将使用X射线刮一些数据,并将其插入到我的Events集合中。从流星服务器插入分贝服务器不工作
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()
,循环就会一直循环。
我错过了什么?执行这样的任务的正确方法是什么?
答
Events.insert()
被称为任何流星纤维以外。添加Meteor.bindEnvironment()
并以回调形式提供整个功能修复了此问题。
我希望在服务器控制台中看到“Meteor代码必须在光纤中,尝试使用Meteor.bindEnvironment”的错误。 – user3374348
你的事件模式是什么样的?我的猜测是匿名函数在插入调用中隐藏了一个异常。 –
我打算试着重现这个问题,但是为了避免添加软件包,所以我只是提供了内容=假数据。它工作得很好。 X射线回调是否非阻塞?在所有数据可用之前尝试插入可能存在问题? – terrafirma9