Zaktualizowałem mój meteoryt wczoraj i próbowałem używać nowego Meteor.Collection.ObjectID
. Ale od bez powodzenia. Najpierw zaktualizowane moje zbiory w ten sposób:meteor 0.5.7: jak obsługiwać/używać Meteor.Collection.ObjectID?
myCollection = new Meteor.Collection('mycollection', {idGeneration: 'MONGO'}
Teraz normalne nowe wkładki mają _id
jak Wi2RmR6CSapkmmdfn
...
Wtedy mam kolekcję z tablicą wliczone (?). Lubię mieć unikalny identyfikator dla każdego obiektu w tej tablicy. Więc i $push
obiekt z polem jak id: new Meteor.Collection.ObjectID()
do mojej tablicy. Wynik w bazie danych wygląda następująco: ObjectId("5b5fc278305d406cc6c33756")
. (Wydaje się to normalne.)
Ale później chcę zaktualizować mój pushed obiekt, jeśli id
jest równy id, który wcześniej zapisałem jako atrybut danych w znaczniku HTML.
var equals = EJSON.equals(dbId, htmlId);
(Powoduje to za każdym razem w false
Więc zalogowany wartości dbId
i htmlId
do konsoli z console.log(typeof dbId, dbId);
.)
Wartości tych dwóch zmiennych jest w następujący sposób:
object { _str: 'a86ce44f9a46b99bca1be7a9' }
(dbid)
string ObjectID("a86ce44f9a46b99bca1be7a9")
(htmlId, to wydaje się być poprawne, ale dlaczego jest zwyczaj wpisać ciąg?)
Jak poprawnie używać Meteor.Collection.ObjectID
?
** Dziękuję za szybką odpowiedź! :) ** Btw: '{{_id.toHexString}}' nie działa bezpośrednio, ale zarejestrowałem globalnego pomocnika handlebarów, który wykonuje to zadanie. –
Powinien działać bez pomocy, testowałem go przed wysłaniem, czy masz inny identyfikator obiektu Meteor 0,57? – Akshat
Hmm ... Usunąłem moje kolekcje, ale mój helpler pomocniczy do debugowania, który wypisuje daną wartość w konsoli, nic nie wypisuje, gdy nazywam go '{{debug _id.toHexString}}'. Spojrzałem na źródła minimongo i '{{_id._str}}' działa bezpośrednio ('ObjectID.toHexString()' zwraca '_str') –