可以在map或reduce函数中使用Date.now类型函数吗?它可以在任何地方使用吗? 更具体地说,视图不能缓存Date.now值。 以下是我测试的仅在更改任何视图函数后第一次运行时的效果:
function (doc){
var n = new Date();
if(doc.TimeStamp > n.getTime() - 30000){
emit(doc._id, doc);
}
}
答案 0 :(得分:2)
是。 var now = new Date()
应该有效。
条件必须为false
。您可以使用视图对其进行测试:
function (doc) {
var now = new Date()
var timestamp = now.getTime()
emit(timestamp,null)
}
会回复类似
的内容{
"total_rows":1,
"offset":0,
"rows" :[{
"id":"ecd99521eeda9a79320dd8a6954ecc2c",
"key":1429904419591, // timestamp as key
"value":null
}]
}
确保doc.TimeStamp
是一个数字(可能您必须执行parseInt(doc.TimeStamp)
)然后大于timestamp - 30000
关于您的代码行emit(doc._id, doc);
的两个字:
doc._id
作为关键手段,您可能不需要视图。只需GET /databasename/:id
申请该文档即可。此外,在多部分键中包含doc._id
或视图行的值通常不是必需的,因为它自动包含在每一行中作为附加属性。一个有效的原因是,您希望对文档ID进行排序。doc
作为值发出。只需在请求视图时添加?include_docs=true
,每行都会有一个附加属性doc
,其中包含完整的文档。 答案 1 :(得分:2)
仅当特定文档更新时,才会刷新视图行。但是您可以请求该结果的视图:将doc.TimeStamp作为键发出并使用?startkey = timestamp请求视图,其中timestamp是now.getTime() - 30000的值。