Какой тип GUID на Mongoose

В настоящее время я использовал MongoVUE для импорта из текущей базы данных SQL Server, но все ПК с uniqueidentifier были преобразованы во что-то вроде "Binary - 3:UuidLegacy"

Мой вопрос: как создать схему для этой структуры в Mongoose? Я не вижу тип данных Guid/UUID в документах Mongoose http://mongoosejs.com/docs/api.html

И еще, я получаю проблему, когда запрос с ValidationID что-то вроде

db.Validations.find({ValidationID: '1389AB5E-56BD-46FD-9A8A-258C7BDE4251'});

Он ничего не возвращает, хотя этот Guid в точности совпадает с записью SQL Server.

Благодарю.

2 ответа

Это сводило меня с ума в течение нескольких часов, так как решение, которое я в конечном итоге пришлось установить

npm install mongodb --save
npm install slugid --save

и закодируйте это следующим образом

var mongo = require('mongodb');
var slugid = require('slugid');

...

    var guidb64 = slugid.encode(guid);  // guid is something like '8440d561-1127-4fd8-aca9-54de19465d0b'

    guidb64 = guidb64.replace(/_/g, '/'); // for whatever reason slug uses '_' instead of '/' I have in db
    guidb64 += '=='; // adding missing trailing '==' I have in db
    
    var GUID = new mongo.Binary(new Buffer(guidb64, 'base64'), 3);    
    
    var query = MySchemaType.findOne({ Guid: GUID });
    
    query.exec(function(err, entity) {
      // process
    })

MongoVUE немного запутывает здесь, но приятным способом, который облегчает чтение. Вот каков твой пример ValidationID из '1389AB5E-56BD-46FD-9A8A-258C7BDE4251' на самом деле выглядит - это type 3 BinData:

{"ValidationID" : BinData(3,"E4mrXla9Rv2aiiWMe95CUQ==")}

Зритель преобразует это в более читаемый формат для вас. Это делается путем преобразования в гекс и добавления тире. Для доказательства:

> var bar = BinData(3,"E4mrXla9Rv2aiiWMe95CUQ==")
> bar.hex()
1389ab5e56bd46fd9a8a258c7bde4251

Если вы хотите найти этот идентификатор, то удалите дефисы и передайте их в поиск следующим образом (я вставил образец документа):

> db.foo.find({ValidationID: UUID('1389AB5E56BD46FD9A8A258C7BDE4251')})
{ "_id" : ObjectId("544fd7ddbb4f50c77c61f367"), "ValidationID" : BinData(3,"E4mrXla9Rv2aiiWMe95CUQ==") }

У меня нет настроенного мангуста для тестирования, но я проделал работу для ног в другом ответе, похожем на это с точки зрения конвертации в javascript,

Другие вопросы по тегам