#mongodb #node.js
#mongodb #node.js
Вопрос:
Я использую Node.js и попытался сохранить данные временной метки в базе данных Mongodb с помощью следующего кода:
`articleProvider.saveUser({
userID : user,
email : email,
address : "",
time : new Date().getTime(),
},function(error,userData){
if(!userData){ callback(error);}
else{ callback(null,userData);}
});
}
});`
И данные, хранящиеся в базе данных (из оболочки mongo):
{ "userID" : "hem", "email" : "hereshem@gmail.com", "address" : "Kathmandu", "time" : NumberLong("1320911838254"), "_id" : ObjectId("4ebb83dea7dd40990e000002") }
НО если я получу данные в node.js вывод на консоль становится :
{ userID: 'hem',
email: 'hereshem@gmail.com',
address: 'Kathmandu',
time: { low_: -1938088914, high_: 307 },
_id: 4ebb83dea7dd40990e000002 }
Теперь мой вопрос заключается в том, как извлечь это значение поля «time» с данными длиной в число?
Он выдает выходные данные с двумя разными полями «low_» и «high_». Но я хочу, чтобы на выходе было только «1320911838254» .
Кто-нибудь может мне помочь?
Спасибо за ответ. Но я пытался получить число, используя
var value = new Long(low_bits, high_bits).toNumber();
как опубликовал мистер Лича, но в Node.js Платформа показывает ошибку «Long не определен» как :
var value = new Long(user.time.low_, user.time.high_).toNumber();
ReferenceError: Long is not defined
at /home/developer/Desktop/Express/app.js:65:1
at /home/developer/Desktop/Express/public/js/processData.js:76:10
at /home/developer/Desktop/Express/public/js/dbQuery.js:196:16
at [object Object].<anonymous> (/home/developer/node_modules/mongodb/lib/mongodb/collection.js:743:5)
at [object Object].emit (events.js:67:17)
at [object Object].<anonymous> (/home/developer/node_modules/mongodb/lib/mongodb/connections/server.js:97:12)
at [object Object].emit (events.js:64:17)
at Socket.<anonymous> (/home/developer/node_modules/mongodb/lib/mongodb/connection.js:161:16)
at Socket.emit (events.js:64:17)
at Socket._onReadable (net.js:678:14)
Как получить синтаксический анализатор long в node.js ? Есть идеи?
И спасибо strada за ответ. Но как сохранить как DateObject в Mongodb? Тип данных определяется сам по себе. Есть ли какой-либо способ изменить тип данных в Mongodb? И как их проанализировать?
Ответ №1:
Я нашел лучшее решение после долгой практики :
articleProvider.saveUser({
userID : user,
email : email,
address : "",
time : new Date().getTime().toString(),
},function(error,userData){
if(!userData){ callback(error);}
else{ callback(null,userData);}
});
}
});
Сохраните объект date как объект string с помощью «toString()» и после запроса измените объект string на целочисленное значение с помощью «parseInt()».
Я думаю, что это действительно простое и хорошее решение.
Ответ №2:
MongoDB хранит число как 64-битный объект, но javascript это не поддерживает, поэтому они должны иметь _low и _high . Вы можете получить число следующим образом:
var value = new Long(low_bits, high_bits).toNumber();
Подробнее читайте здесь. Вместо этого вам следует рассмотреть возможность использования объекта date.
Комментарии:
1. Я пытаюсь сделать это в оболочке Mongo в Compass, и я получаю:
Long is not defined