首页 > 解决方案 > MongoDB findOne 在服务器重启后返回 null

问题描述

第一次在这里发布问题。我每秒有多个 post 请求进入 nodejs 服务器,具有不同的 ID 作为字符串来确定它们来自谁。它在大多数情况下都按预期工作,但是在重新启动服务器以推送更新时,它始终失败。

 db.findOne({ID: req.body.ID})

            .then(function(data){
                if(data) // goes on and does things with the data
                else { 
                      db.insertOne(req.body, () => {
                            resolve(console.log("New user created"))
                      })
                }
              }) //a few other then blocks and a catch block that I don't think are relevant

我对所有这些东西都很陌生,但除了服务器重新启动之外,它似乎在大多数情况下都按照我的意图工作。它会在每次重新启动时为同一个用户创建多个新条目,有时会在它开始在 findOne 请求上返回有效值之前 3 个或更多

我尝试对其他值进行更多 findOne 检查,但在服务器重新启动后它们都返回 null。

这是一个运行 nodejs 的 Heroku 服务器,使用 express 和 mongodb 作为服务器打开与 Mongodb 的连接的唯一包

dotenv.config()
const mongodb = require('mongodb')

mongodb.connect(process.env.CONNECTIONSTRING, {useNewUrlParser: true, useUnifiedTopology: true}, function(err, client){
    module.exports = client.db().collection('userdata')
    const app = require("./app")
    app.listen(process.env.PORT)
})

我在“db”中包含了集合名称,因为我只使用一个集合。

编辑:我无法重新创建只有一个用户发送帖子请求的问题,它只发生在多个用户发送帖子请求并且节点 js 服务器正在重新启动时

标签: node.jsmongodb

解决方案


推荐阅读