Я пытаюсь позвонить _.each функция в метеорном сервере метод. Как вы знаете, каждый метод имеет функцию, которая будет выполняться для каждого элемента в списке Моя проблема, что я не могу использовать bindenviroment функцию в правильном пути я имею ошибку ниже Ошибка: Метеор код должен всегда работать внутри волокна. Попробуйте обменивать обратные вызовы, которые вы передаете библиотекам не-Метеор с помощью Meteor.bindEnvironment.метеор и lodash каждый
Вот мой код
'fillSampleData': function() {
var fs = require('fs');
var base = process.env.PWD
projectsCollction.remove({});
changeSetsCollction.remove({});
var readFileAndInsert = function() {
fs.readFile(base + '/server/json/projects.json', 'utf8',
function(err, data) {
if (err) throw err;
console.log(data);
var json = JSON.parse(data);
//loop th
_.each(json, Meteor.bindEnvironment((eer, projctItem) => {
var project_Id = projectsCollction.insert(
projctItem)
console.log(`projict ${project_Id}`);
}));
}
//----------------------------
);
}
readFileAndInsert()
}
============= Редактировать =======
Я изменил код, кроме Такой же результат
'fillSampleData': function() {
var fs = require('fs');
var base = process.env.PWD
projectsCollction.remove({});
changeSetsCollction.remove({});
var myFunction = function(passedItem) {
Meteor.bindEnvironment((eer, passedItem) => {
var project_Id = projectsCollction.insert(
passedItem)
console.log(`project ${project_Id}`);
})
}
var readFileandInsert = function() {
fs.readFile(base + '/server/json/projects.json', 'utf8',
function(err,
data) {
if (err) throw err;
console.log(data);
var json = JSON.parse(data);
_.each(json, (item) => {
myFunction(item);
});
}
//----------------------------
);
}
readFileandInsert();
}
стек ошибка
W20161022-07:22:26.840(3)? (STDERR) /home/mohammed/poly/synthesis- demo/.meteor/local/build/programs/server/packages/meteor.js:1060
W20161022-07:22:26.844(3)? (STDERR) throw new Error("Meteor code must always run within a Fiber. " +
W20161022-07:22:26.848(3)? (STDERR) ^
W20161022-07:22:26.853(3)? (STDERR)
W20161022-07:22:26.855(3)? (STDERR) Error: Meteor code must always run within a Fiber. Try wrapping callbacks that you pass to non-Meteor libraries with Meteor.bindEnvironment.
W20161022-07:22:26.860(3)? (STDERR) at Object.Meteor._nodeCodeMustBeInFiber (packages/meteor/dynamics_nodejs.js:9:1)
W20161022-07:22:26.863(3)? (STDERR) at Object.Meteor.bindEnvironment (packages/meteor/dynamics_nodejs.js:85:1)
W20161022-07:22:26.865(3)? (STDERR) at myFunction (server/main.js:42:14)
W20161022-07:22:26.867(3)? (STDERR) at server/main.js:56:13
W20161022-07:22:26.868(3)? (STDERR) at arrayEach (/home/mohammed/poly/synthesis-demo/node_modules/lodash/lodash.js:451:11)
W20161022-07:22:26.870(3)? (STDERR) at Function.forEach (/home/mohammed/poly/synthesis-demo/node_modules/lodash/lodash.js:8634:14)
W20161022-07:22:26.872(3)? (STDERR) at server/main.js:55:13
W20161022-07:22:26.873(3)? (STDERR) at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:380:3)
Можете ли вы поставить это в плункер или скрипку или подобное? – Mikkel
https://embed.plnkr.co/5qjWKyN7hubmlAUYbAG4/ –
@mohammedbarqawi Прошу прощения, просто вставка вышеуказанного кода в плункер не помогает мне. Я готов помочь, но вы должны предоставить что-то, что позволит мне воспроизвести вашу проблему, не выполняя кучу работы. Возможно, вы могли бы поделиться со мной проектом метеор? Вы можете поместить его в github и поделиться им, или если вы предпочитаете держать его в секрете, вы можете использовать bitbucket – Mikkel