最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

MongoDB Native Node.js问题

IT培训 admin 6浏览 0评论

MongoDB Native Node.js问题

在创建从MongoDB数据库读取的Node REST API时,我遇到了一个问题(在这种情况下,我使用的是Mongodb-native,而不是Mongoose)。我正在尝试在我从本地文件读取的给定时间戳之后查询所有结果。然后我获取最高事件的时间戳并将其保存到文件中(目标是此方法应返回上一个查询的最新事件,如果这是有意义的话)。

到目前为止这是我的代码:

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(“最新上一个日期是:”+内容)以此格式返回日期:2017-12-27T18:57:37.000Z。当我将该日期插入函数new Date(date) - > new Date(“2017-12-27T18:57:37.000Z”)时,我可以在进行REST调用时成功获取信息。但是,现在的方式是,当尝试使用Postman进行GET调用时,它只是缓冲区(有时它会在第一次尝试时起作用,但之后会缓冲)。

我在这里做错了什么?我尝试使用不同的字符串选项,删除新的日期,添加到ISOString()等等来处理新的日期(...),但没有成功。

谢谢!

回答如下:

我认为重点是客户端,而不是服务器。我不熟悉Postman,但我的观点是你需要将Cache控件(对于你的客户端获取请求头)设置为no-cache,例如:

Cache-Control: no-cache, no-store, must-revalidate

您也可以尝试设置max-age cache header param,

max-age=0

(详情:https://developer.mozilla/en-US/docs/Web/HTTP/Headers/Cache-Control)

MongoDB Native Node.js问题

在创建从MongoDB数据库读取的Node REST API时,我遇到了一个问题(在这种情况下,我使用的是Mongodb-native,而不是Mongoose)。我正在尝试在我从本地文件读取的给定时间戳之后查询所有结果。然后我获取最高事件的时间戳并将其保存到文件中(目标是此方法应返回上一个查询的最新事件,如果这是有意义的话)。

到目前为止这是我的代码:

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(“最新上一个日期是:”+内容)以此格式返回日期:2017-12-27T18:57:37.000Z。当我将该日期插入函数new Date(date) - > new Date(“2017-12-27T18:57:37.000Z”)时,我可以在进行REST调用时成功获取信息。但是,现在的方式是,当尝试使用Postman进行GET调用时,它只是缓冲区(有时它会在第一次尝试时起作用,但之后会缓冲)。

我在这里做错了什么?我尝试使用不同的字符串选项,删除新的日期,添加到ISOString()等等来处理新的日期(...),但没有成功。

谢谢!

回答如下:

我认为重点是客户端,而不是服务器。我不熟悉Postman,但我的观点是你需要将Cache控件(对于你的客户端获取请求头)设置为no-cache,例如:

Cache-Control: no-cache, no-store, must-revalidate

您也可以尝试设置max-age cache header param,

max-age=0

(详情:https://developer.mozilla/en-US/docs/Web/HTTP/Headers/Cache-Control)

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论