1

我对 Meteor 很陌生,一直在玩弄文件。我已经能够向最终用户显示我的集合中的顶级文档,但想知道是否可以向用户显示子文档及其字段。

我在 Mongo 中的文档如下所示:

"_id" : "qeuhr3X7ErcvpnfXE",
"name" : "Profile",
"Channels" : {
  "channel test" : {
    "name" : "channel test",
    "HighLimit" : 6.5,
    "LowLimit" : 4.5,
    "StopCount" : 10
  }
},
"steps" : {
},
"createdBy" : "psG7RnnD35J6uwceY"

我的最终目标是让用户创建Channels,并且当他们创建它们时,它们会出现在网页上的列表中并且是可编辑的。我缺少的一块拼图实际上是显示这些频道并允许它们被选择。

我目前已经有一个表单,允许用户添加任意​​数量的表单channels。任何指导将不胜感激。

4

2 回答 2

1

在这种情况下,您可以通过以下方式参考子级文档

Channels['channel test']

和钥匙

Channels['channel test'].name
于 2018-07-20T01:48:25.100 回答
0

基于上面您说过您更喜欢非规范化的存储方法这一事实,我的建议是将每个channel对象存储在一个名为Channels.

然后,您需要为它们中的每一个分配一个,_id以便将来可以引用它们。

您可以使用 Meteorrandom包为子文档创建新 ID:

import { random } from meteor/random;
const channelId = random.id()

_id然后,您可以使用如下查询来更新每个频道:

Channels.update(
  { _id: "qeuhr3X7ErcvpnfXE", "Channels._id", "bqudr562ercppmh7A" },
  { $set: { "Channels.$.name": "New Channel Name" }}
)

此查询利用 Mongo$运算符,它允许您定位数组内的对象,然后更新该特定对象。

于 2018-07-20T11:10:50.620 回答