2013-03-10 12 views

risposta

34

Meteor utilizza lo stesso metodo per oggetto id se si sceglie di usarlo:

Meteor.Collection.ObjectID() è lo stesso del MongoDB ObjectID

Il suo solo sotto il nome Meteor.Collection. Usa EJSON per mantenere gli ID oggetto in JSON ordinario all'estremità client. Perché in fondo ci sono 2 i database con meteora

Minimongo

Si tratta di una sorta di cache MongoDB sul lato client. I dati vengono scaricati dal mongodb principale sul server a questo quando si carica il browser. Quando vengono apportate modifiche, vengono inviate al server.

Server MongoDB

Questa è la MongoDB originale 10gen sul server

Quindi, a causa di questi due database Meteor deve avvolgere la funzionalità MongoDB in Meteor.Collection e consentono di utilizzare lo stesso codice sia sul client e server.

Per impostazione predefinita, la località non utilizzerà ID oggetto, verrà utilizzato un tipo di testo alfanumerico casuale. Questo è fatto in modo che tu possa facilmente utilizzare gli ID nei tuoi URL e ID nei tuoi attributi html.

Se si utilizza new Meteor.Collection.ObjectID() si otterrà un oggetto ObjectID che utilizzerà le specifiche di mongodb di ObjectID sul lato server. Il valore di timestamp nell'ID oggetto non viene trattenuto ma ciò non dovrebbe causare alcun danno.

+0

Ho sprecato un bel 20 minuti cercando di capire perché la regex '/^[0-9a-fA-F] + $ /' restituiva 'false' con i miei ObjectId ... Hai menzionato che Meteor usa" alfanumerico casuale testo ", esiste una logica per verificare se una determinata stringa è un ID valido? –

+3

@BradM si potrebbe provare a cercare '/^[A-Za-z0-9] {17} $ /' potrebbe funzionare. Anche non completamente alfanumerico, non ho mai visto 0 o 1 in un _id. Penso che i numeri possano essere mescolati visivamente come se io e 1 non venissero usati. – Akshat

4

Da 0.9.1 Meteor suggerisce di utilizzare Mongo.ObjectID anziché Meteor.Collection.ObjectID. Fondamentalmente entrambi sono uguali. Controllare history.md per ulteriori modifiche alle convenzioni di denominazione.

+0

Sì, l'ho visto, ma ho avuto difficoltà a capire come ottenere la stringa _id. Usato il seguente 'var newID = new Mongo.ObjectID; item._id = newID._str; ' Grazie a questo argomento http://stackoverflow.com/questions/19236685/how-do-i-use-new-meteor-collection-objectid-in-my-mongo- query-con-meteora – yankeyhotel

Problemi correlati