2017-06-30 2 views
0

Guten Tag Entwickler! Ich bin mit Meteor.js arbeiten, es ist mein erster expirience ich Sammlung in Datei erstelltCollection.insert ist keine Funktion - Meteor

// ./dbs/messages.js 

import { Mongo } from 'meteor/mongo'; 
import { Meteor } from 'meteor/meteor'; 
import { check } from 'meteor/check'; 

export const Messages = new Mongo.Collection('messages'); 

und es in api Punkt verwenden, um mit Aufruf Messages.insert wie die

// server/mail.js 

import Messages from './dbs/messages.js'; 

Meteor.methods({ 
'message.post'(messageText, location){ 
    Messages.insert({ 
     messageText: messageText, 
     location: location 
    }); 
    } 
}) 

Aber wenn ich 'message.post' nenne ich bekommen ein Fehler

Exception while invoking method 'message.post' TypeError 
Messages.insert is not a function 

ABER, wenn ich einen Kommentar Import Sammlung und erklären es in server/main.js wie das

// import Messages from './dbs/messages.js'; 
const Messages = new Mongo.Collection('messages'); 

Meteor.methods({ 
'message.post'(messageText, location){ 
    Messages.insert({ 
     messageText: messageText, 
     location: location 
    }); 
    } 
}); 

In diesem Fall funktioniert meine Messages.insert ordnungsgemäß.

Wer hat Erfahrung mit Meteor - können Sie mir erklären, was der Grund ist? Danke! Auch habe ich entfernt autopublish und insecure Pakete

+0

Wahrscheinlich ein Import Problem. Sie sollten es als benannten Import ('importieren {Nachrichten} von ...') importieren oder als Standard exportieren. – MasterAM

+1

Verwenden Sie geschweifte Klammern wie 'importieren {Nachrichten} von './dbs/messages.js;' –

Antwort

5

Als @MasterAM und @Ankur Soni sagte, Sie müssen Nachrichten importieren Klammern import { Messages } from './dbs/messages.js'; Die einzige Möglichkeit, ohne Klammern zu importieren unter Verwendung von Nachrichten definieren und es dann wie Export so export default Messages;

0

Ich initiiere meine Sammlungen in einem "gemeinsamen" Raum. Ich fühle, was du getan hast ist eigentlich richtig. Sie deklarieren die Sammlung entweder einmal auf der Clientseite und einmal auf der Serverseite oder nur einmal in einem gemeinsamen Ordner. Ich sehe in vielen Dokumentationen, dass der populäre Ort, um diese Deklarationen zu behalten, die Datei/imports/api ... ist, die sowohl dem Server als auch dem Client gemeinsam ist.

RGS Paul