2016-04-15 4 views
0

Ich versuche, eine Datei im privaten Ordner zu speichern, aber ich kann den Pfad nicht richtig finden (oder vielleicht habe ich etwas übersehen?). Als Test habe ich eine Datei erstellt, test.json in einem Ordner namens jsonfiles, den ich versuche, den Pfad zu bekommen.Meteor 1.2.1 Assets.getText gibt undefined zurück

if (Meteor.isServer) { 
    Meteor.methods({ 
    getWebsiteInfo:function(url, params){ 
     console.log("path: " + Assets.getText('jsonfiles/test.json', 
     function(err, result){ 
      if(err){ 
      console.log("Assets err: " + err); 
      } 
      if(result){ 
      return result; 
      } 
     } 
     )); 
    } 
    }); 
} 

Diese Ausgänge:

=> Meteor-Server neu gestartet
I20160415-17: 10: 39,626 (2)? Pfad: undefined

Wie bekomme ich den Pfad zum Ordner jsonfiles, die im privaten Ordner befindet?

Antwort

0

Assets.getText() kann synchron asynchron sein, je nachdem, ob Sie den Callback übergeben. In Ihrem Beispiel haben Sie das getan, dh die Funktion läuft asynchron, dh der Wert wird nicht zurückgegeben, sondern an den Callback übergeben.

Wenn Sie die Funktion den Wert zurückzukehren, entfernen Sie einfach den Rückruf:

console.log("path: " + Assets.getText('jsonfiles/test.json')); 
+0

Als ich es ohne den Rückruf zu tun, ist der Wert leer. Die Ausgabe ist also: Pfad: – Heidi

+0

Es stellt sich heraus, dass der Rohling aufgrund der Datei leer war. Ich erwartete Assets.getText, um den absoluten Pfad zu der Datei zurückzugeben, aber es liest die Datei. Wie finde ich den Pfad zum Ordner privat, damit ich dort Dateien erstellen und speichern kann? – Heidi

+0

Sie können nicht. Der Ordner ist dafür nicht gedacht und Sie können unerwartetes Verhalten erhalten, indem Sie versuchen, dort zu schreiben. Verwenden Sie einen Ordner außerhalb Ihres Anwendungsverzeichnisses, um dynamische Dateien zu speichern. Sie können dann das Standard 'fs'-Modul von Node.js verwenden. –