Метка времени mongodb с использованием node.js - PullRequest
0 голосов
/ 13 октября 2011

У меня есть база данных mongodb, подключенная к приложению node.js через mongodb-native-drivers.Я вставляю данные в базу данных, и мне нужно поставить метку времени, код выглядит следующим образом:

var server = new Server('localhost', 27017, { auto_reconnect: true });
var db = new Db('test', server);

exports.fetch = function(args, callback) {
    db.open(function(err, db) {
        db.collection(args['device'], function(err, collection) {
            var doc = {
                          device: args['device'],
                          data: args['data'],
                          time: new db.bson_serializer.Timestamp()
                      }

            collection.insert(doc, { safe: true }, function(err,result) {
                db.close();
                callback(lastestError);
            });
        });
     });
}

Вставка идет хорошо, за исключением метки времени, которая всегда равна 0!Я удалил все проверки ошибок для ясности и размера.Любая помощь будет оценена!Спасибо.

Ответы [ 2 ]

3 голосов
/ 28 марта 2012

В документации MongoDB говорится, что «тип данных Timestamp, но это специальный внутренний тип для MongoDB, который обычно не следует использовать»:

http://www.mongodb.org/display/DOCS/Dates

ISODate () является правильнымтип для использования.

2 голосов
/ 21 октября 2011

Я думаю, что значение 0 соответствует ожиданиям.Вы должны предоставить младшие (подписанные) 32 бита отметки времени и старшие (подписанные) 32 бита значений отметки времени при создании объекта!Исправление будет здесь."new db.bson_serializer.Timestamp (someIntLow, someIntHigh)"

Подробнее см. https://github.com/christkv/node-mongodb-native/blob/master/lib/mongodb/bson/timestamp.js#L41.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...