Javascript 在Meteor中仅使用id显示相关文档

Javascript 在Meteor中仅使用id显示相关文档,javascript,meteor,meteor-blaze,Javascript,Meteor,Meteor Blaze,我认为这个问题与这里已经讨论过的问题不同。我一直在努力解决这个问题,但找不到好的解决办法 假设如下: //ResourceOne { name: "foobar" } ... ResourceTwo { name: "donuts" } Resources = new Meteor.Collection('resources'); //{ input: ResourceOneID, output: ResourceTwoID } Connections = new Meteor.Collect

我认为这个问题与这里已经讨论过的问题不同。我一直在努力解决这个问题,但找不到好的解决办法

假设如下:

//ResourceOne { name: "foobar" } ... ResourceTwo { name: "donuts" }
Resources = new Meteor.Collection('resources');

//{ input: ResourceOneID, output: ResourceTwoID }
Connections = new Meteor.Collection('connections');
连接将资源连接到其他资源,只存储它们的
\u id
s

我想在表单中显示连接列表

foobar --> donuts
我到底是怎么做到的

现在我有:

{{#each connections}}
    <a href="#">{{ input_name }} --> {{ output_name }}</a>
{{/each}}
此操作有效,但在页面未完全刷新时失败


有什么更好的方法可以做到这一点?

这可能是因为您没有等待数据完全到达。当你运行这个

Resources.find( { _id: this.input } ).fetch()[0].name;
您假设
resourcese.find(..).fetch()[0]
有一个结果,但情况并非总是如此。当页面最初加载时,数据可能尚未到达浏览器,结果将是
null
。如果选中
name
属性,它将抛出异常

您只需处理此案例即可使其正常工作:

var resource = Resources.findOne( { _id: this.input } );
return resource && resource.name;
注意:
findOne()
.fetch()[0]
相同


所以这里
resource
返回
null
,如果它为null,则不会检查它的
name
属性。

这感觉很神奇。非常感谢!您是否介意我这样问:我理解return语句中的习惯用法,但是是什么导致系统“等待”resource.name具有值呢?也就是说,我们如何知道
资源。返回时,name
将不会为空?顺便说一句,我尝试了投票,但我没有足够的信誉点…请告诉我是否有其他方法可以补偿。这让我困惑了一段时间。@m52go别担心。这并不是真正的等待。最初它返回“”(nothing)&一旦数据到达,它就会填充数据,因为它的反应性会根据新数据进行调整,而无需任何代码
var resource = Resources.findOne( { _id: this.input } );
return resource && resource.name;