无法从ipfs.util.addFromFS

时间:2017-02-08 20:13:31

标签: javascript mongodb meteor callback ipfs

我正在尝试在MongoDB中存储回调响应的主体。更具体地说,我正在" main.js - server"上执行/ipfs/add作为这个流星方法。文件。

ipfsAdd: function(){
    var result = ipfs.util.addFromFs('/home/eruguru/CreativeCommonPlace/server/landscape.jpg');
    return (result);
},

然后我将它导入到这个点击HTML按钮时执行的meteor js模板。

Template.ipfsAdd.events({
    'click .ipfsButton': function(event){
        Meteor.call("ipfsAdd", function(err, res)
        {console.log(err, res)});
    }
})

我知道该函数的工作原理是我在控制台中获得预期输出作为未定义对象的一部分

{
    hash: "QmW1xtbLAmS9TBfmeHnhNC7cavLEcxDPHa2MfJtRSmy8dC",
    path: "landscape.jpg",
    size: 132713
}

所以我想我被困在哪里是如何将这个对象定义为一个变量,然后将它作为我的MongoDB的一部分收集。

我的最终目标是建立一个表,其中第一列是文件名列表,第二列是文件大小,第三列是来自未定义回调响应对象的哈希值。

如果我在不正确的地方发布了这个或者发生了其他任何新手错误,请提前道歉。我相信这是我关于堆栈交换的第一个问题。

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

所以几天后我发现了我的问题,如果有人需要帮助解决类似的问题,这应该适合你。请记住,IPFS是alpha版本,他们的文档和API可以随时更改。

将鼠标放在“res”console.log输出中的字段(哈希,路径和大小)之后,我注意到我弹出显示'[“0”] .hash'。所以我需要修改我的Template.ipfsAdd.events脚本。

Template.ipfsAdd.events({
  'click .ipfsButton': function(event){
    Meteor.call("ipfsAdd",
    function(err, res){
      //console.log(err, res)
      ListofFiles.insert({
        text: res["0"].hash,
      });
    }
    );
  }
})

其中“ListOfFiles”是我想要添加信息的MongoDB的名称。这也适用于路径和大小字段。如果在一个ipfsAdd函数中添加多个文件,只需将res索引更改为相应的文件。