2013-08-31 4 views
3

Как я могу нанести ObjectId на число? В моем приложении я использую последнюю версию mongoose и основу для клиентов.mongoose objectid to number

Моя проблема заключается в том, что ObjectId всегда попадает между кавычками, что приводит к двойным кавычкам, таким как «233453452534» «в моих нефритовых шаблонах и на моем клиенте.


редактировать:

Я запрашивая MongoDB с

this.users.find({},function(err,docs){ 
    cb(null,docs) 
}) 

console.log (документы) показывает

{ name: 'test', 
_id: 5220bc207f0c866f18000001, 
__v: 0 } 

в моем шаблоне

option(data-id=val._id) #{val.name} 

я передать это res.render

res.render('test.jade',docs) 

и мой HTML делает:

""5220bb43b754af4118000001"" 

двойные кавычки Arround мой объект идентификатору. Я попытался установить число в схеме, и это работает, никаких кавычек вокруг него, если это число, поэтому я предполагаю, что это происходит, потому что это objectID.

+0

Вам нужно показать больше того, что это проблема. Откуда взялись цитаты? Почему вы хотите преобразовать его в число? – WiredPrairie

ответ

3

попробуйте использовать виртуальный onstead идентификатор _ID

option(data-id=val.id) #{val.name} 

вместо

option(data-id=val._id) #{val.name} 
6

Это проверялось, но я думаю, что вы хотите сделать что-то вроде этого:

var idNum = parseInt(objectId.valueOf(), 16); 

MongoDB ObjectIDs по существу 12 байт шестнадцатеричных строк. Это делает их больше, чем MAX_VALUE для номера JavaScript (2^53), поэтому вы можете столкнуться с ошибками при преобразовании. Но, похоже, что Number.MAX_VALUE в моей среде node.js (0.11.6) может обрабатывать это значение. Поэтому вы можете быть в безопасности ...

Почему вы конвертируете ID объекта в номер? Вы действительно не должны выполнять арифметические операции на ObjectId ...

+0

это очень круто. – deepelement

1

Дать в случае, если у вас есть то же самое проблема с использованием чего-то другого, кроме мангуста: у меня была такая же проблема с использованием монгоскина.

Каким-то образом Jade вызывается, когда рендеринг mongo _id является атрибутом HTML.

Для меня решение было это:

// instead of 

option(data-id=val._id) 

// try 

option(data-id="#{val._id}") 
Смежные вопросы