社区首页 >问答首页 >同一集合的流星合并游标

同一集合的流星合并游标
EN

Stack Overflow用户
提问于 2014-03-22 17:23:14
回答 2查看 2.8K关注 0票数 4

在我的社交应用程序(如FB)中,我有一个奇怪的需求,那就是在一次发布中合并同一个集合用户的两个游标!

Meteor服务器打印此错误:“发布函数返回集合用户的多个游标”。

也许在Meteor 0.7.2中做不到这一点,也许我搞错了。但是我已经看到了游标的结构非常简单,因为我可以进行一个简单的数组合并并返回一个游标?

客户端

代码语言:javascript
代码运行次数:0
复制
Meteor.subscribe('friendById', friend._id, function() {
    //here show my friend data and his friends
});

服务器

代码语言:javascript
代码运行次数:0
复制
//shared functions in lib(NOT EDITABLE)
getUsersByIds = function(usersIds) {
    return Meteor.users.find({_id:  {$in: usersIds} },
                            {
                                fields: {   // limited fields(FRIEND OF FRIEND)
                                    username: 1,
                                    avatar_url: 1
                                }
                            });
};
getFriendById = function(userId) {
    return Meteor.users.find(userId,
                            {
                                fields: {   // full fields(ONLY FOR FRIENDS)
                                    username: 1,
                                    avatar_url: 1,
                                    online: 1,
                                    favorites: 1,
                                    follow: 1,
                                    friends: 1
                                }
                            });
};

Meteor.publish('friendById', function(userId) { //publish user data and his friends

    if(this.userId && userId)
    {
        var userCur = getFriendById(userId),
            userFriends = userCur.fetch()[0].friends,
            retCurs = [];

        //every return friend data
        retCurs.push( userCur );

        //if user has friends! returns them but with limited fields:

        if(userFriends.length > 0)
            retCurs.push( getUsersByIds(userFriends) );

        //FIXME ERROR "Publish function returned multiple cursors for collection users"

        return retCurs;     //return one or more cursor
    }
    else
        this.ready();
});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-25 09:57:18

溶液

代码语言:javascript
代码运行次数:0
复制
Meteor.publish('friendById', function(userId) {

    if(this.userId && userId)
    {
        var userCur = getFriendById(userId),  //user full fields
            userData = userCur.fetch()[0],
            isFriend = userData.friends.indexOf(this.userId) != -1,
            retCurs = [];

        //user and his friends with limited fields
        retCurs.push( getUsersByIds( _.union(userId, userData.friends) ));

        if(isFriend)
        {
            console.log('IS FRIEND');

            this.added('users',userId, userData);   //MERGE full fields if friend
            //..add more fields and collections in reCurs..
        }

        return retCurs;
    }
    else
        this.ready();
});
票数 1
EN

Stack Overflow用户

发布于 2014-03-22 17:32:14

请参阅文档中的粗体红色文本

如果在数组中返回多个游标,则它们当前都必须来自不同的集合。

有一个聪明-出版包,它增加了在发布时使用这个功能来管理同一个集合上的多个游标。这是相对较新的。

这或手动管理游标,在发布中使用‘that . and’、‘that. Either’和'this.changed‘。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22585893

复制
相关文章
父游标、子游标及共享游标
        游标是数据库领域较为复杂的一个概念,因为游标包含了shared cursor和session cursor。两者有其不同的概念,也有不同的表现形式。共享游标的概念易于与SQL语句中定义的游标相混淆。本文主要描述解析过程中的父游标,子游标以及共享游标,即shared cursor,同时给出了游标(session cursor)的生命周期以及游标的解析过程的描述。   
Leshami
2018/08/14
1.5K0
R语言数据集合并、数据增减、不等长合并
1、merge(a,b),纯粹地把两个数据集合在一起,没有沟通a、b数据集的by,这样出现的数据很多,相当于a*b条数据;
悟乙己
2019/05/28
13.6K0
ORACLE游标(oracle游标属性)
简单说,退出循环的必要条件:fetch 语句执行成功 + 第一次 fetch 的值返回 null
全栈程序员站长
2022/08/02
1.6K0
ORACLE游标(oracle游标属性)
D流星雨
#include <bits/stdc++.h> #define ll long long using namespace std; pair<int,int> star[1500000]; int d[1500000]; int main() { int n,x,y; scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d %d",&star[i].second,&star[i].first); } sort(star,star+n);//按结束
用户2965768
2019/03/19
4560
【简单】合并集合(并查集)
一共有 n 个数,编号是 \rm{1} \sim n,最开始每个数各自在一个集合中。现在要进行 m 个操作,操作共有两种:
字节星球Henry
2021/08/09
1K0
父游标、子游标及共享游标
游标是数据库领域较为复杂的一个概念,因为游标包含了shared cursor和session cursor。两者有其不同的概念,也有不同的表现形式。 共享游标的概念易于与SQL语句中定义的游标相混淆。本文主要描述解析过程中的父游标,子游标以及共享游标,即shared cursor,同时给出了 游标(session cursor)的生命周期以及游标的解析过程的描述。   
全栈程序员站长
2022/07/15
1.5K0
DotNet多个程序集合并工具
    有很多人问到过“如何合并两个.NET的DLL”。这也是我自己想知道答案的问题。这个ILMerge,就是解决这个问题的工具,可以从微软的网站下载:http://www.microsoft.com
张善友
2018/01/19
7970
Oracle的静态游标与动态游标
我们在写Oracle的存储过程里面,经常会用到游标,Oracle里面的游标分为静态游标和动态游标。今天我们在说一下分别有什么不同。
Vaccae
2019/07/24
3K0
oracle的游标 sql语句,sql游标
declare 游标名 cursor [LOCAL | GLOBAL][FORWARD_ONLY | SCROLL][STATIC | KEYSET | DYNAMIC ] [READ_ONLY | SCROLL_LOCKS]
全栈程序员站长
2022/09/18
1.5K0
流星雨
声明:本文为原创,作者为 对弈,转载时请保留本声明及附带文章链接:http://www.duiyi.xyz/c%e5%ae%9e%e7%8e%b0%e9%9b%b7%e9%9c%86%e6%88%98%e6%9c%ba-57/
对弈
2019/09/04
5280
游标
执行结果 1         2       测试看看      xland 2         4       asdfasdf      xland 3         5       asdfasdf      xland 4         6       全文索引全文索引全文索引xland的全文索引      xland 再看一种执行方式
liulun
2022/05/08
5100
游标
游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标充当指针的作用。尽管游标能遍历结果中的所有行,但他一次只指向一行。
ellipse
2019/08/16
6460
游标
【Groovy】集合遍历 ( 使用集合的 collect 循环遍历集合并根据指定闭包规则生成新集合 | 代码示例 )
调用集合的 collect 方法进行遍历 , 与 调用 each 方法进行遍历 , 实现的功能是不同的 ;
韩曙亮
2023/03/30
2.6K0
【Groovy】集合遍历 ( 使用集合的 collect 循环遍历集合并根据指定闭包规则生成新集合 | 代码示例 )
C# 版dll 程序集合并工具
最近要开发一个控件给同事用,开发中会引用一些第三方DLL,这样交给用户很不方便,希望的效果是直接交付一个DLL文件。网上找了一些资料。  1.       使用 Costura.Fody ,这个强大之处是可以在build阶段直接将依赖的DLL合并在目标EXE中,支持非托管DLL进行mixed mode 打包,不足之处是 只能将DLL合并到EXE中,不支持DLL和DLL的合并,目前满足不了我的需求。 参考资料 http://www.cnblogs.com/instance/archive/2015/10/09
庞小明
2018/03/07
1.9K0
Mysql 游标
当前有三张表A、B、C其中A和B是一对多关系,B和C是一对多关系,现在需要将B中A表的主键存到C中; 常规思路就是将B中查询出来然后通过一个update语句来更新C表就可以了,但是B表中有2000多条数据, 难道要执行2000多次?显然是不现实的;最终找到写一个存储过程然后通过循环来更新C表, 然而存储过程中的写法用的就是游标的形式。
Cyylog
2020/08/19
3.4K0
PL/SQL --> 游标
映射在结果集中某一行数据的具体位置,类似于C语言中的指针。即通过游标方式定位到结果集中某个特定的行,然后根据业务需求
Leshami
2018/08/07
1K0
oracle游标的使用详解_oracle游标失效
游标(CURSOR):游标是把从数据表中提取出来的数据,以临时表的形式存放在内存中,在游标中有一个数据指针,在初始状态下指向的是首记录,利用fetch语句可以移动该指针,从而对游标中的数据进行各种操作。
全栈程序员站长
2022/11/18
1.9K0
oracle游标的使用详解_oracle游标失效
SQL游标
alter proc cursor_pr_UpUser @NoteUserId int as begin transaction declare @NLId int declare @NPLId int –创建用户所对应的日志游标cursorNLId,将日志id放入@NLId游标中 declare cursorNLId cursor for select NoteLogId from NoteLogs where NUId=@NoteUserId open cursorNLId fetch next from cursorNLId into @NLId
全栈程序员站长
2022/09/07
4800
Java 游标
jdbcTemplate.setDataSource(goodsDataSource); jdbcTemplate.query(con -> { PreparedStatement preparedStatement = con.prepareStatement(sql, ResultSet.TYPE_FORWARD_ONLY,
chenchenchen
2021/09/06
6840
MongoDB 游标
MongoDB中的游标与关系型数据库中的游标在功能上大同小异。游标相当于C语言的指针,可以定位到某条记录,在MongoDB中,则是文档。因此在mongoDB中游标也有定义,声明, 打开,读取,关闭这么个过程。客户端通过游标,能够实现对最终结果进行有效的控制,诸如限制结果数量,跳过部分结果或根据任意键按任意顺序的组合对结果进行各种排序等。下文是针对MongoDB游标的具体介绍。 一、mongoDB游标介绍 db.collection.find()方法返回一个游标,对于文档的访问,我们需要进行游标
Leshami
2018/08/13
8390

相似问题

点向量的OpenCV findContours

10

Opencv FindContours函数

12

findContours用重复点返回等高线

12

OpenCv查找等高线()过多的等高线

11

OpenCV findContours函数问题

35
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档