流星对象未定义为什么?

时间:2014-11-16 03:31:09

标签: meteor

这是我使用Papa Parse(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"
    }
]

我很难使用Meteor方法找到对象值,所以我可以将它添加到我的集合中,以下是rowData.Desc rowData.Title未定义...回复row.data到浏览器控制台显示一切正常。任何想法都错了吗?

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

});

1 个答案:

答案 0 :(得分: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()