Мне сложно использовать Fibers/Meteor.bindEnvironment(). Я попытался обновить код и вставить в коллекцию, если коллекция пуста. Все это должно быть запущено на стороне сервера при запуске.
function insertRecords() {
console.log("inserting...");
var client = Knox.createClient({
key: apikey,
secret: secret,
bucket: 'profile-testing'
});
console.log("created client");
client.list({ prefix: 'projects' }, function(err, data) {
if (err) {
console.log("Error in insertRecords");
}
for (var i = 0; i < data.Contents.length; i++) {
console.log(data.Contents[i].Key);
if (data.Contents[i].Key.split('/').pop() == "") {
Projects.insert({ name: data.Contents[i].Key, contents: [] });
} else if (data.Contents[i].Key.split('.').pop() == "jpg") {
Projects.update( { name: data.Contents[i].Key.substr(0,
data.Contents[i].Key.lastIndexOf('.')) },
{ $push: {contents: data.Contents[i].Key}} );
} else {
console.log(data.Contents[i].Key.split('.').pop());
}
}
});
}
if (Meteor.isServer) {
Meteor.startup(function () {
if (Projects.find().count() === 0) {
boundInsert = Meteor.bindEnvironment(insertRecords, function(err) {
if (err) {
console.log("error binding?");
console.log(err);
}
});
boundInsert();
}
});
}
В первый раз, написав это, у меня появились ошибки, которые мне нужно было обернуть мои обратные вызовы в блоке Fiber(), а затем при обсуждении IRC, кто-то рекомендует попробовать Meteor.bindEnvironment(), поскольку это должно быть помещено в Fiber, Это не сработало (единственный результат, который я видел, был inserting...
, что означает, что bindEnvironment() не выдала ошибку, но также не запускает какой-либо код внутри блока). Тогда я добрался до этого. Моя ошибка: Error: Meteor code must always run within a Fiber. Try wrapping callbacks that you pass to non-Meteor libraries with Meteor.bindEnvironment.
Я новичок в Node и не совсем понимаю концепцию волокон. Я понимаю, что они аналогичны потокам на C/С++/на каждом языке с потоковой обработкой, но я не понимаю, какие последствия распространяются на мой серверный код: почему мой код бросает ошибку при попытке вставить в Коллекция. Может кто-нибудь объяснить это мне?
Спасибо.