Mongodb 时间戳非常不准确 - mongoose
Mongodb timestamp is very inaccurate - mongoose
我正在使用 mongoose 在 mongodb 中存储对象,我使用 Date.now()
记录创建日期
我发现数据库中存储了错误的时间。差异非常零星,有7天,3天甚至5分钟。
就在今天早上,我在澳大利亚东部标准时间上午 8 点 (GMT+10) 创建了一个对象,但数据库中的时间早了 7 天。
这是数据库对象:
{
"_id": "554bdfaf797cb8e02753e06f",
"description": "test d",
"createdBy": "testuser",
"key": "f1a593f4dd51e632388a1755e09a7b4dc0bc0e24ef8bcf5cf859ac759a45e8a6",
"__v": 0,
"files": [],
"createdAt": "2015-05-01T05:42:07.687Z"
}
我在 mac 和 win 7 上都看到过这个问题。
第一次注意到mongodb版本2.6.3,刚升级到3.0.2,没有变化。
更新
我在架构中设置 createdAt 日期,如下所示:
var uploadSchema = new Schema({
createdAt: {
type: Date,
required: true,
default: Date.now()
},
我的数据库和应用程序 运行 在同一台主机上。
要点在这里 - https://gist.github.com/reecefenwick/1bcff85d18406b33e5cf
如果您将对象 ID 粘贴到此处的网站中:
http://steveridout.github.io/mongo-object-time/
您会看到此特定文档是今天创建的 (2015-05-07T21:57:03.000Z
)。对象 ID 包含创建日期信息。
创建 createdAt
条目的代码在哪里?数据库和您的应用程序代码在不同的服务器上吗?这可以解释为什么 mongo 使用与 createdAt
.
不同的日期创建对象 ID
如果它们在同一台服务器上,您应该 post 创建 createAt
时间字符串的代码。
发生的事情是,您在定义架构以设置 createdAt
的默认值时 调用 Date.now()
,然后该值将用作默认值,直到您的应用下次重新启动为止。
相反,您想将默认值设置为 Date.now
函数本身,以便每次创建新文档时都会调用它:
var uploadSchema = new Schema({
createdAt: {
type: Date,
required: true,
default: Date.now
},
我正在使用 mongoose 在 mongodb 中存储对象,我使用 Date.now()
记录创建日期我发现数据库中存储了错误的时间。差异非常零星,有7天,3天甚至5分钟。
就在今天早上,我在澳大利亚东部标准时间上午 8 点 (GMT+10) 创建了一个对象,但数据库中的时间早了 7 天。
这是数据库对象:
{
"_id": "554bdfaf797cb8e02753e06f",
"description": "test d",
"createdBy": "testuser",
"key": "f1a593f4dd51e632388a1755e09a7b4dc0bc0e24ef8bcf5cf859ac759a45e8a6",
"__v": 0,
"files": [],
"createdAt": "2015-05-01T05:42:07.687Z"
}
我在 mac 和 win 7 上都看到过这个问题。
第一次注意到mongodb版本2.6.3,刚升级到3.0.2,没有变化。
更新
我在架构中设置 createdAt 日期,如下所示:
var uploadSchema = new Schema({
createdAt: {
type: Date,
required: true,
default: Date.now()
},
我的数据库和应用程序 运行 在同一台主机上。
要点在这里 - https://gist.github.com/reecefenwick/1bcff85d18406b33e5cf
如果您将对象 ID 粘贴到此处的网站中:
http://steveridout.github.io/mongo-object-time/
您会看到此特定文档是今天创建的 (2015-05-07T21:57:03.000Z
)。对象 ID 包含创建日期信息。
创建 createdAt
条目的代码在哪里?数据库和您的应用程序代码在不同的服务器上吗?这可以解释为什么 mongo 使用与 createdAt
.
如果它们在同一台服务器上,您应该 post 创建 createAt
时间字符串的代码。
发生的事情是,您在定义架构以设置 createdAt
的默认值时 调用 Date.now()
,然后该值将用作默认值,直到您的应用下次重新启动为止。
相反,您想将默认值设置为 Date.now
函数本身,以便每次创建新文档时都会调用它:
var uploadSchema = new Schema({
createdAt: {
type: Date,
required: true,
default: Date.now
},