2016-05-18 6 views
0

Momentan arbeite ich an einer E-Commerce-App, ich benutze Meteor 1.3. Momentan stehe ich darauf, Beziehungen zwischen zwei Kollektionen zu definieren. Ich habe zwei von ihnen, sagen wir mal Products und Customers, ich meteor-collection-helpers verwenden, diese Aufgabe zu verwalten und für jetzt mein Code sieht wie folgt aus:Beziehungen zwischen den Sammlungen in Mongo

Products.js

import {Mongo} from 'meteor/mongo'; 
import {Customers} from './customers.js'; 

export const Products = new Mongo.Collection('products'); 

Products.helpers({ 
    getName() { 
     return this.productName; 
    }, 
    getId() { 
     return this._id; 
    }, 
    customers() { 
     return Customers.findOne(this.customerId); 
    } 
}); 

Customers.js

import {Mongo} from 'meteor/mongo'; 
import {Products} from './products.js'; 

export const Customers = new Mongo.Collection('customers'); 

Customers.helpers({ 
    tours() { 
     return Products.find({customerId: this._id}); 
    } 
}); 

Und das ist die Methode, einen neuen Kunden in Customers Sammlung einzufügen:

Customers.insert({ 
     name, 
     phone, 
     email, 
     productId: Products.findOne().getId(), 
     product: Products.findOne().getName(), 
     createdAt: new Date(), 
}); 

direkt nach dem Bestellformular vorgelegt ich ein neues Dokument erhalten, aber das Problem ist, ich richtig insert-Methode für nur erstes Dokument anwenden kann, WHE I Bestellformular für die zweite Bestellung versuche die Einreichung dieses Dokument noch den Namen packt und ID des ersten Dokuments, so dass es momentan keinen Sinn macht, dieses Formular zu verwenden. Ich habe den Code während des Googlens sehr geändert, aber nichts gefunden und Teile gerettet, die ich Ihnen gezeigt habe, weil es zumindest für das erste Produkt funktioniert. Ich denke, ich habe etwas falsch gemacht, während productId Methode definieren, aber ich kann es nicht bekommen, so hoffe ich, hier Hilfe zu finden. Irgendwelche Vorschläge werden herzlich begrüßt und wenn ich meinen Fehler vor irgendwelchen Pfosten in diesem Thema herausfinden werde, würde ich es definitiv teilen.

UPD

Lösung ist so einfach wie es sein kann, und ich habe nicht Paket muss ich über oben geschrieben habe. Die richtige Abfrage war product: Products.findOne(this.props.product._id).productName, die den Trick gemacht hat.

Antwort

1

Grundsätzlich haben Sie das Problem selbst gefunden, kennen aber die Lösung nicht. Products.findOne() gibt immer das allererste Dokument zurück, wenn Sie kein Argument wie übergeben.

+0

Danke für die Antwort! Ja, ich kann einfach nicht herausfinden, wo ich ID-Argument von –

+0

Entschuldigen Sie für eine Verzögerung, besuchen Sie einfach SO, um Ihre Antwort als richtige Antwort zu markieren –

Verwandte Themen