2013-03-10 4 views

ответ

34

Meteor использует тот же метод для объекта идентификаторов, если вы решите использовать его:

Meteor.Collection.ObjectID() таким же, как MongoDB в ObjectID

Ее просто под названием Meteor.Collection. Он использует EJSON для хранения идентификатора объекта в обычном JSON до конца клиента. Потому что в основном есть 2 базы данных с метеором

Minimongo

Это своего рода кэш MongoDB на стороне клиента. Данные загружаются с основного mongodb на сервере до этого, когда браузер загружается. При внесении изменений они подталкиваются к серверу.

Сервер MongoDB

Это оригинальный MongoDB из 10gen на сервере

Так из-за этих двух баз данных Meteor нуждается завернуть функциональность MongoDB в Meteor.Collection и позволяют использовать один и тот же код на обоих клиента и сервера.

По умолчанию метеор не будет использовать идентификаторы объектов, он будет использовать произвольный буквенно-цифровой текст. Это делается для того, чтобы вы могли легко использовать идентификаторы в своих URL и идентификаторах в своих атрибутах html.

Если вы используете new Meteor.Collection.ObjectID(), вы получите объект ObjectID, который будет использовать спецификацию объекта Mognodb для ObjectID на сервере. Значение метки времени в ID объекта не задерживается, но это не должно навредить.

+0

Я потратил 20 минут на то, чтобы выяснить, почему регулярное выражение '/^[0-9a-fA-F] + $ /' возвращало 'false' с моими объектами ... Вы упоминаете, что Meteor использует« случайный буквенно-цифровой text ", есть ли какая-либо логика для проверки того, является ли данная строка допустимым идентификатором? –

+3

@BradM вы можете попробовать проверить '/^[A-Za-z0-9] {17} $ /' может работать. Его также не полностью буквенно-цифровой, ни один не видел 0 или 1 в _id. Я думаю, что числа, которые могут быть визуально замешаны, как l и 1, не используются. – Akshat

4

С 0.9.1 Метеор предлагает использовать Mongo.ObjectID вместо Meteor.Collection.ObjectID. В основном оба одинаковы. Для получения дополнительных изменений в соглашениях об именах отметьте history.md.

+0

Да, видел это, но мне было трудно понять, как просто получить строку _id. Используется следующее. 'var newID = новый Mongo.ObjectID; item._id = newID._str; ' Благодаря этой теме http://stackoverflow.com/questions/19236685/how-do-i-use-new-meteor-collection-objectid-in-my-mongo- запросы-с-метеор – yankeyhotel

Смежные вопросы