Почему Meteor.js использует собственные алгоритмы для идентификаторов?Meteor.Collection.ObjectID() vs MongoDB ObjectId()
Почему он не использует ObjectId() от MongoDB?
Почему Meteor.js использует собственные алгоритмы для идентификаторов?Meteor.Collection.ObjectID() vs MongoDB ObjectId()
Почему он не использует ObjectId() от MongoDB?
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.9.1 Метеор предлагает использовать Mongo.ObjectID
вместо Meteor.Collection.ObjectID
. В основном оба одинаковы. Для получения дополнительных изменений в соглашениях об именах отметьте history.md.
Да, видел это, но мне было трудно понять, как просто получить строку _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
Я потратил 20 минут на то, чтобы выяснить, почему регулярное выражение '/^[0-9a-fA-F] + $ /' возвращало 'false' с моими объектами ... Вы упоминаете, что Meteor использует« случайный буквенно-цифровой text ", есть ли какая-либо логика для проверки того, является ли данная строка допустимым идентификатором? –
@BradM вы можете попробовать проверить '/^[A-Za-z0-9] {17} $ /' может работать. Его также не полностью буквенно-цифровой, ни один не видел 0 или 1 в _id. Я думаю, что числа, которые могут быть визуально замешаны, как l и 1, не используются. – Akshat