我正在尝试复制此处显示的行为: http://meteor.hromnik.com/blog/joins-in-meteorjs-and-mongodb
我有一个名为Ensembles的集合,其中包含objetsIds。我想转换这些id,以便它们成为doc中的Objets而不是id。我的两个Collection都分为两个文件:ensembles.js和objets.js。它看起来好像是在同一个文件上它可以工作,但我无法按原样工作。
我已经控制了。记录了我的doc.objets,它给了我[1,2]。如果我在mongo db控制台中执行db.objets.find({id:{$ in:[1,2]}}),我也会得到结果。但是在代码中它总是返回一个空数组,以及当我只做一个简单的.find({})时。如果我必须订阅我应该如何以及在哪里做到这一点?
ENSEMBLES.JS
import { Meteor } from 'meteor/meteor';
import { Mongo } from 'meteor/mongo';
import { check } from 'meteor/check';
import { Objets } from '../api/objets.js';
export const Ensembles = new Mongo.Collection('ensembles', {
transform: function(doc){
doc.objetsFull = Objets.find({
_id : { $in: doc.objets }
});
return doc;
}
});
Ensembles.attachBehaviour('softRemovable');
if (Meteor.isServer) {
Meteor.publish('ensembles', function ensemblesPublish() {
return Ensembles.find({});
});
Meteor.methods({
'ensembles.insert'(ens) {
Ensembles.schema = new SimpleSchema({
"Name": { type: String },
"like": { type: Number, optional: true },
"addedToMongoAt": { type: Date },
"objets": { type: [String], optional: true },
"imagePath" : { type: String, optional:true},
"likes" : {type : Number, optional:true},
});
ens.addedToMongoAt = new Date();
ens.likes = 0;
check(ens, Ensembles.schema);
return Ensembles.insert(ens);
},
'ensembles.remove'(id) {
Ensembles.softRemove({_id: id});
},
'ensembles.update'() {
}
});
}
OBJETS.JS
import { Meteor } from 'meteor/meteor';
import { Mongo } from 'meteor/mongo';
export const Objets = new Mongo.Collection('objets');
if (Meteor.isServer) {
Meteor.publish('objets', function objetsPublication(skipCount, limit) {
return Objets.find({}, { limit: 30 });
});
}