2014-11-16 129 views
0

下面是使用帕帕解析(CSV解析庫),我的代碼流星物體未定義爲什麼?

  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未定義...回聲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); 
     .... 

確保顯示在終端中。

如果您的數據是數據,並且您沒有看到終端中的錯誤,則在終端中打開一個新選項卡並運行meteor的mongo命令以打開mongo shell。

$ meteor mongo 

接下來,列出所有的收藏和發現收集,最有可能的產品

> show collections 

,並列出該集合的文件,以確保數據被存儲:

> db.products.find().pretty()