【发布时间】:2018-11-17 11:51:07
【问题描述】:
[edit:]大家好,几天后没有找到任何解决方案,也没有收到这篇文章的答案,我再次尝试编辑这篇文章,加油。
通常,我自己找到解决方案,但这次奇怪的事情让我日复一日地发疯..
事情是这样的:(使用 Meteor 和 Angular2)
我有 2 个不同的集合,documents 和 fieldList,定义方式相同:
在 /both/collections/documents.collection.ts
export const Docs = new Mongo.Collection<Doc>('documents');
export const Docss = MongoObservable.fromExisting(Docs);
在 /both/collections/fieldList.collection.ts
export const fieldLists = new Mongo.Collection<FieldList>('fieldList');
export const fieldListss = MongoObservable.fromExisting(fieldLists);
同样发布方式:
在 /server/imports/publications/documents.ts
Meteor.publish('docsList', () => {
return Docs.find({},{});
});
在 /server/imports/publications/fieldList.ts
Meteor.publish('fieldListList', () => {
return fieldLists.find({},{});
});
现在,在我的组件中,我订阅:
...import skipped...
export class documentPanelDocFormComponent implements OnInit,OnDestroy{
...Var declaration skipped...
...Constructor declaration skipped...
ngOnInit() {
this.fieldListSub = MeteorObservable.subscribe('fieldListList').subscribe();
this.docsSub = MeteorObservable.subscribe('docsList').subscribe();
...
现在,我可以在 mongool 中看到这两个集合:
不幸的是,当我从 db 获取时:
....still inside ngOnInit...
console.log("Documents Fetch:",Docss.find({}).fetch());
console.log("FieldLists Fetch:",fieldListss.find({}).fetch());
它有效,但仅适用于文档,我为 fieldList 得到一个空数组:
如果有人知道这里出了什么问题,请赐教:) 在此先感谢,抱歉英语不好 PS:如果您需要代码的任何其他部分,请告诉我
【问题讨论】:
-
大家好,发现 ngOnInit 中的 fieldList 数据尚不可用(仍然无法理解为什么它可用于 Docss..)并在 MeteorObservable 订阅中使用回调,如下所示:
[...] .subscribe(docId => {this.docId = docId; this.fieldListSub = MeteorObservable.subscribe('fieldListList').subscribe( () => { this.docsSub = MeteorObservable.subscribe('docsList').subscribe( () => { console.log("FieldLists Fetch:",fieldListss.find({}).fetch());}
标签: angular meteor angular-meteor