首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果添加子文档,则响应本机Meteor订阅中断

如果添加子文档,则响应本机Meteor订阅中断
EN

Stack Overflow用户
提问于 2017-01-11 19:59:39
回答 1查看 177关注 0票数 0

概述(简化)

我正在运行一个Meteor服务器,其发布是由ID参数化的:

代码语言:javascript
复制
Meteor.publish('documents.byId', function(documentId) {
  ...
  return Documents.find({documentId});
});

Documents集合(名称已更改)有一个SimpleScema附加到它。此文档的架构包含一个字段,该字段是一个子文档数组。

代码语言:javascript
复制
Documents.schema = new SimpleSchema({
  ...
  subdocuments: {
    label: 'Sub Documents',
    type: [SubDocumentSchema],
    defaultValue: [],
    optional: true
  }
  ...
});

Documents.attachSchema(Documents.schema);

然后,我按照通常的方式在客户端有一个容器,并有一个订阅:

代码语言:javascript
复制
...
var handle = Meteor.subscribe('documents.byId', documentId);
... 
var document = Meteor.collection('documents').findOne();
...    

问题描述

react-native-meteor客户机上,只有在数组中没有子文档的情况下,客户端才正确地接收订阅数据。一旦添加了子文档,当我尝试从react本地重新订阅时,列表就会变为空。有趣的是,如果我已经订阅了,它仍然会注意到文档的变化,但是一旦我重新加载应用程序,它就找不到它了。

在服务器上,我检查了通过日志记录找到的文档,但是在客户机上,当我执行Meteor.collections('documents).findOne()时,它是空的,除非子文档字段是空的。

在流星服务器的web客户端上,如果我按ID订阅文档,那么无论有多少子文档,一切都很好。

问题

我怀疑这要么是某种简单的错误类型的错误,要么是react-native-meteor本身的问题。还有人能重新创造这个吗?我已经坚持了一段时间了--我唯一的猜测是,也许本机版本不知何故不满意这个模式?

编辑版本

React原生版本: 0.39.2

流星版本: 1.4.2.3

更新

在搜索并逐步遍历react-meteor-native代码以查看它正在做什么时,我发现有一次数据确实回来了!所以这可能是某种时间问题?

更新2

如果我筛选出服务器端的子文档数组,则本机客户端再次开始工作:

代码语言:javascript
复制
return Documents.find({documentId}, {
  fields: {'subdocuments': 0}
}

也许react-native-meteor不喜欢一些关于子文档格式/模式的东西..。

更新3

我从子文档数组中删除了"id“字段,现在一切正常。所以在子文档数组中有一个Meteor.Collection.ObjectID类型的字段是个问题.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-11 22:56:09

经过多次实验,我发现react-native-meteor的行为是错误的,这是因为我为子文档填充_id字段的方式。

最初,我一直将ID设置为:

代码语言:javascript
复制
var _id = new Meteor.Collection.ObjectID();

但是,当我意识到这引起了问题之后,我就用了字符串版本来代替:

代码语言:javascript
复制
var _id = new Meteor.Collection.ObjectID().valueOf();

而现在本地客户的行为。我不知道这是个解决办法还是我做错了什么.我的模式中的字段的类型设置为type: Meteor.Collection.ObjectID,但是它似乎对字符串和对象都很满意。

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

https://stackoverflow.com/questions/41599687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档