在使用其他集合的新Mongo.Collection中使用transform函数始终返回空

时间:2016-07-18 19:03:18

标签: javascript mongodb meteor

我正在尝试复制此处显示的行为: 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 });
      });
    }

0 个答案:

没有答案