gpt4 book ai didi

javascript - 限制 mongo 动态返回的字段

转载 作者:太空宇宙 更新时间:2023-11-04 00:35:35 25 4
gpt4 key购买 nike

我使用 Meteor 来查询 mongo 集合。例如,它具有以下条目:

{
"_id": "uCfwxKXyZygcWQeiS",
"gameType": "foobar",
"state": "starting",
"hidden": {
"correctAnswer": "secret",
"someOtherStuff": "foobar"
},
"personal": {
"Y73uBhuDq2Bhk4d8W": {
"givenAnswer": "another secret",
},
"hQphob8s92gbEMXbY": {
"givenAnswer": "i have no clue"
}
}
}

我现在想做的是:

  • 不要返回“hidden”后面的值
  • 从“个人”嵌入文档仅返回请求用户的值

在代码中它看起来像这样:

Meteor.publish('game', function() {
this.related(function(user) {
var fields = {};
fields.hidden = 0;
fields.personal = 0;
fields['personal.' + this.userId] = 1;

return Games.find({}, {fields: fields});

}, Meteor.users.find(this.userId, {fields: {'profile.gameId': 1}}));
}

显然这行不通,因为 MongoDB 不允许混合包含和排除。另一方面,我无法切换到“仅指定包含的字段”,因为它们可能因游戏类型而异,并且会变成一个很大的列表。

我真的希望你能帮助我摆脱这个困境。我该怎么做才能解决这个问题?

最佳答案

在何处使用直接控制的发布功能(this.add/removed/changed 方法)的典型示例。请参阅页面下方的第二个示例 block http://docs.meteor.com/api/pubsub.html#Meteor-publish .

通过这种模式,您可以完全控制发布的时间和内容。

关于javascript - 限制 mongo 动态返回的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39194212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com