2016-08-04 20 views
0

Ich mache den ‚simple-todo‘ Neuling Tutorial und bemerkte, dass, wenn ich Sicherheit in Schritt 9 hinzugefügt, war ich nicht mehr in der Lage Aufgaben vor, die erstellt zu löschen.Wie bekomme ich nur die ID von this._id, wenn this._id ein Objekt zurückgibt?

Das Problem ist, dass meine remove -Methode überprüft, um sicherzustellen, dass die ID, die es erhält, eine Zeichenfolge ist, und die To-Do-Aufgaben, die zuvor über die Konsole gemacht wurden, ein Objekt zurückgeben, wenn ich This_.id verwenden.

Mit anderen Worten: Aufgaben über das Terminal erstellt, this._id -> ObjectId ("57a128afbe5fd7e7ba9a6fca") Aufgaben mit der Methode Tasks.insert erstellt, this._id -> "57a128afbe5fd7e7ba9a6fca"

Und die Die neue remove-Methode mag den ObjectId-Teil nicht. Wie kann ich nur die ID bekommen? Ich würde mir vorstellen, dass es so etwas wie diese sein würde._id._id, aber das ist undefiniert. Die Problemumgehung bestand darin, die Überprüfung von der Methode "remove" zu entfernen, die weniger sicher ist.

-Link: https://www.meteor.com/tutorials/blaze/security-with-methods

+0

Wenn Sie von der Konsole einsetzen werden Sie Erhalten Sie immer eine 'ObjectId()' anstelle einer Zeichenkette, es sei denn, Sie geben während der Einfügung explizit eine Zeichenkette '_id' an. –

Antwort

1

können Sie this._id._str verwenden, um den Hex Teil des ObjectId zu bekommen.

Ich würde vorschlagen, dass Ihre Methode nur die Zeichenfolge verwendet, und einen Scheck in dem Client tun, um zu sehen, ob Sie this._id verwenden müssen oder this._id._str

+0

Danke! Gibt es etwas Besonderes an den Unterstrichen hier? Oder ist es nur eine Konvention, die Eigenschaften am Anfang mit einem Unterstrich zu versehen? In Python zum Beispiel manchmal _ oder __ werden für die Privatsphäre einiger Attribute/Methoden verwendet - wie andere Entwickler zu sagen "Verwenden Sie diese nicht direkt, sie sollen versteckt sein." –

+0

Wo kann ich mehr über die Objekte erfahren, mit denen ich hier arbeite? Wie gibt es Dinge, die ich neben _id und _str benutzen kann? Das ist nicht besonders hilfreich https://docs.meteor.com/api/collections.html#Mongo-ObjectID Gibt es einen Ort mit einigen Beschreibungen von dem, was in integrierten Funktionen oder Objekten, die ich in laufen könnte? Hoffentlich mit einigen Beispielen? Wie die Stripe-API-Dokumentation war großartig, als ich damit in Python arbeitete. –

+0

Unterstrich ist nur eine Konvention. Es bedeutet intern, aber es gibt nichts, was Sie davon abhält, es zu benutzen. Wenn Sie das Objekt auf der Konsole drucken - console.log (this) - dann können Sie es überprüfen, um zu sehen, was darin ist. Drücken Sie in Chrome und Firefox F12, um die Konsole zu öffnen. –