gpt4 book ai didi

meteor - 在 Meteor 中,如何仅查询给定订阅的记录?

转载 作者:行者123 更新时间:2023-12-04 17:09:13 25 4
gpt4 key购买 nike

我知道订阅是一种将记录流入客户端集合的方式,来自 this post , 和别的...

但是,根据 this post , 您可以有多个订阅流入同一个集合。

// server
Meteor.publish('posts-current-user', function publishFunction() {
return BlogPosts.find({author: this.userId}, {sort: {date: -1}, limit: 10});
// this.userId is provided by Meteor - http://docs.meteor.com/#publish_userId
}
Meteor.publish('posts-by-user', function publishFunction(who) {
return BlogPosts.find({authorId: who._id}, {sort: {date: -1}, limit: 10});
}

// client
Meteor.subscribe('posts-current-user');
Meteor.subscribe('posts-by-user', someUser);

现在 - 我通过两个不同的订阅获得了我的记录,我可以使用订阅来获取它撤回的记录吗?或者我必须重新查询我的收藏?在客户端和服务器之间共享该查询的最佳实践是什么?

我希望我没有在这里遗漏一些明显的东西,而是执行 Meteor.subscribe函数只是因为它的副作用似乎正在丢失一条非常有用的信息 - 即记录来自哪个订阅。据推测,选择的出版物和订阅名称是有意义的——如果我能找到与该名称相关的记录就好了。

最佳答案

您似乎想要做的是维护两个单独的记录集合,其中每个集合都由不同的出版物填充。如果您阅读了 DDP specification ,您会看到服务器告诉客户端每条记录属于哪个集合(不是发布),并且多个发布实际上可以为同一记录提供不同的字段。

但是,Meteor 实际上允许您将记录发送到任何任意集合名称,客户端将查看它是否具有该集合。例如:

if (Meteor.isServer) {
Posts = new Mongo.Collection('posts');
}

if (Meteor.isClient) {
MyPosts = new MongoCollection('my-posts');
OtherPosts = new MongoCollection('other-posts');
}

if (Meteor.isServer) {
Meteor.publish('my-posts', function() {
if (!this.userId) throw new Meteor.Error();

Mongo.Collection._publishCursor(Posts.find({
userId: this.UserId
}), this, 'my-posts');

this.ready();
});

Meteor.publish('other-posts', function() {
Mongo.Collection._publishCursor(Posts.find({
userId: {
$ne: this.userId
}
}), this, 'other-posts');

this.ready();
});
}

if (Meteor.isClient) {
Meteor.subscribe('my-posts', function() {
console.log(MyPosts.find().count());
});

Meteor.subscribe('other-posts', function() {
console.log(OtherPosts.find().count());
});
}

关于meteor - 在 Meteor 中,如何仅查询给定订阅的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27748100/

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