2014-11-16 2 views
0

Вот мой код, используя Papa Разбор (CSV Parser Library)Метеорные объекты не определены Почему?

  Papa.parse(theFile.target.result, { 
       header: true, 
       step: function(row) { 
        Meteor.call('file-upload', row.data); 
       } 

row.data это объект выглядит следующим образом:

[ 
    { 
     "Column 1": "foo", 
     "Column 2": "bar" 
    }, 
    { 
     "Column 1": "abc", 
     "Column 2": "def" 
    } 
] 

Я с трудом находя значение объекта с помощью метода Метеора так Я могу добавить его в свою коллекцию: rowData.Desc rowData.Title не определены ... Echoing row.data в консоль браузера показывает все отлично. Какие-нибудь идеи в чем-то не так?

Meteor.methods({ 
    'file-upload': function(rowData) { 
     Products.insert({ 
      Title: rowData.Title, 
      Desc: rowData.Desc 
     }) 
    } 

}); 
+0

Определены ли 'row.data' свойства' row.data.Title' и 'rowD.data.Desc'? Потому что это метод 'file-upload', который вы показываете. – Paul

ответ

1

Откуда вы получаете «rowData.Title»? rowData представляется массивом, а не объектом. И название свойства вообще не существует во вложенных объектах.

Но я думаю, что знаю, что вы пытаетесь сделать.

Похоже, что вам просто нужно хранить данные, итерируя по массиву или визуализируя их по-другому в своем шаблоне.

Если каждый из этих литералов объектов в массиве является продуктом, то, что вы, вероятно, хотите сделать итерацию над этим массивом и вставить данные таким образом:

Meteor.methods({ 
    'file-upload': function(rowData) { 
     _.each(rowData, function(data) { 
      Products.insert({ 
       Title: rowData["Column 1"], 
       Desc: rowData["Column 2"] 
      }) 
     }); 
    } 
}); 

Некоторые дополнительные вещи вы могли бы сделать, чтобы снимать проблемы:

Во-первых, убедитесь, что ваш метод получения данных, что необходимо на сервере, регистрируя его на терминал:

Meteor.methods({ 
    'file-upload': function(rowData) { 
     console.log('rowData: ', rowData); 
     .... 

Убедитесь, что в терминале отображаются показания.

Если у вас есть данные и вы не видите ошибок в терминале, откройте новую вкладку в терминале и запустите команду mongo meteor, чтобы открыть оболочку mongo.

$ meteor mongo 

Следующая, перечисляют все коллекции и считают, что сбор, скорее всего, продукты

> show collections 

и список документов для этой коллекции, чтобы убедиться, что данные хранятся:

> db.products.find().pretty() 
Смежные вопросы