1

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

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

然后我将它导入到当点击 HTML 按钮时执行的这个流星 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 的一部分收集。

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

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

非常感谢您的帮助!

4

1 回答 1

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 索引更改为相应的文件。

于 2017-02-12T18:23:58.377 回答