【问题标题】:Timestamp mongodb using node.js时间戳 mongodb 使用 node.js
【发布时间】:2011-10-13 13:14:24
【问题描述】:

我有一个通过 mongodb-native-drivers 连接到 node.js 应用程序的 mongodb 数据库。我正在向数据库中插入数据,并且需要对其进行时间戳,代码如下所示:

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!为了清晰和大小,我删除了所有错误检查。任何帮助,将不胜感激!谢谢。

【问题讨论】:

  • 你不能只使用DateDate.now() 之类的东西吗?它必须是时间戳吗?
  • 是的,如果没有人知道错误最终会发生什么。让mongodb填写时间戳似乎更正确

标签: javascript mongodb node.js


【解决方案1】:

MongoDB 文档指出“时间戳数据类型,但它是 MongoDB 的特殊内部类型,通常不应使用”:

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

ISODate() 是正确使用的类型。

【讨论】:

    【解决方案2】:

    我认为值 0 符合预期。您需要在创建对象时提供时间戳的低(有符号)32 位和时间戳值的高(有符号)32 位!更正将在这里。 "新的 db.bson_serializer.Timestamp(someIntLow,someIntHigh)"

    请参阅https://github.com/christkv/node-mongodb-native/blob/master/lib/mongodb/bson/timestamp.js#L41 了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-01
      • 2017-10-15
      • 1970-01-01
      • 2014-07-21
      • 2016-09-20
      • 1970-01-01
      • 2017-07-01
      • 1970-01-01
      相关资源
      最近更新 更多