MongoDB 本机 Node.js 问题
MongoDB Native Node.js issue
在创建从 MongoDB 数据库读取的节点 REST API 时,我 运行 遇到了问题(我使用的是 Mongodb-native,在这种情况下不是 Mongoose)。我正在尝试查询从本地文件读取的给定时间戳后的所有结果。然后我获取最重要事件的时间戳并将其保存到文件中(目标是此方法应该 return 来自上次查询的最新事件,如果这有意义的话)。
到目前为止,这是我的代码:
router.get("/latestevent", function(req, res, next) {
db.collection("events", function(err, collection){
var contents = new Date(fs2.readFileSync('latesttimeevent','utf8')).toISOString();
console.log("Newest previous date is: " + contents);
var date = String(contents);
collection.find({event: {$regex: '00FF0004'},eventtime: {'$gte':new Date(date)}}).sort({$natural:-1}).limit(10).toArray(function(err, data)
{
fs.writeFile("latesttimeevent",data[0].eventtime, function(err)
{
if(err)
{
return console.log(err);
}
console.log("Cell File was saved");
});
res.json(data);
})
});
});
Console.log("Newest previous date is: " + contents) returns 格式的日期:2017-12-27T18:57:37.000Z。当我将该日期插入函数 new Date(date) -> new Date("2017-12-27T18:57:37.000Z") 时,我能够在进行 REST 调用时成功获取信息。但是,现在的情况是,当尝试使用 Postman 进行 GET 调用时,它只是缓冲(有时它会在第一次尝试时起作用,但随后会缓冲)。
知道我做错了什么吗?我尝试用不同的字符串选项搞乱 new Date(...),删除 new Date,添加 toISOString() 等,但没有成功。
谢谢!
我认为重点在客户端,而不是服务器端。我不熟悉 Postman,但我的意思是你需要将缓存控制(对于你的客户端 Get 请求 header)设置为 no-cache,例如:
Cache-Control: no-cache, no-store, must-revalidate
您也可以尝试设置 max-age 缓存 header 参数,
max-age=0
(详情:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control)
在创建从 MongoDB 数据库读取的节点 REST API 时,我 运行 遇到了问题(我使用的是 Mongodb-native,在这种情况下不是 Mongoose)。我正在尝试查询从本地文件读取的给定时间戳后的所有结果。然后我获取最重要事件的时间戳并将其保存到文件中(目标是此方法应该 return 来自上次查询的最新事件,如果这有意义的话)。
到目前为止,这是我的代码:
router.get("/latestevent", function(req, res, next) {
db.collection("events", function(err, collection){
var contents = new Date(fs2.readFileSync('latesttimeevent','utf8')).toISOString();
console.log("Newest previous date is: " + contents);
var date = String(contents);
collection.find({event: {$regex: '00FF0004'},eventtime: {'$gte':new Date(date)}}).sort({$natural:-1}).limit(10).toArray(function(err, data)
{
fs.writeFile("latesttimeevent",data[0].eventtime, function(err)
{
if(err)
{
return console.log(err);
}
console.log("Cell File was saved");
});
res.json(data);
})
});
});
Console.log("Newest previous date is: " + contents) returns 格式的日期:2017-12-27T18:57:37.000Z。当我将该日期插入函数 new Date(date) -> new Date("2017-12-27T18:57:37.000Z") 时,我能够在进行 REST 调用时成功获取信息。但是,现在的情况是,当尝试使用 Postman 进行 GET 调用时,它只是缓冲(有时它会在第一次尝试时起作用,但随后会缓冲)。
知道我做错了什么吗?我尝试用不同的字符串选项搞乱 new Date(...),删除 new Date,添加 toISOString() 等,但没有成功。
谢谢!
我认为重点在客户端,而不是服务器端。我不熟悉 Postman,但我的意思是你需要将缓存控制(对于你的客户端 Get 请求 header)设置为 no-cache,例如:
Cache-Control: no-cache, no-store, must-revalidate
您也可以尝试设置 max-age 缓存 header 参数,
max-age=0
(详情:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control)