首页 > 解决方案 > 我如何在 mongodb.connect() 之外使用 db.collection()

问题描述

所以问题是我从区块链获取数据并将该数据设置在我的模型中的updateProgress()中,只要在区块链中有任何更改时,我将调用我的 updateProgress() 并在模型中设置数据然后保存它。

但是在这里为了将数据保存到 mongodb,你可以看到我已经将 passdata从 updateProgress() 传递到mongodb.connect()并且我的数据库连接只被调用一次,所以当区块链更改时 updateProgress() 被调用但数据不是得到保存。

那么,我如何在 mongodb.connect() 之外使用 db.collection() 我想在我的 updateProgress() 中使用它,以便每次调用数据时都会在模型中设置保存到数据库

在这里,如果我想在每次必须与数据库创建连接时保存数据

  function updateProgress(message){
       console.log('updateProgress is running ')
    //   db save;
       const data = new datamodel({
           type: message.type,
           req_id:message.req_id,
        //    block_num:message.data.block_num
       });
       passdata=data;      
   }



const uri = "mongodb+srv://<databasename>:<password>@cluster0-z2ii6.mongodb.net/test?retryWrites=true&w=majority"
var dbconn= MongoClient.connect(uri,{ useNewUrlParser: true ,useUnifiedTopology: true},function(err, db) {
     if(err) {console.log('Error occurred while connecting to MongoDB Atlas...\n',err);}
     console.log('Connected...');
      dbo=db.db(<databasename>)

     dbo.collection('datamodel').insertOne(passdata,(err,passdata)=>{
         if(err) throw err
         console.log('data is inserted')
     })
  });    



标签: javascriptmongodb

解决方案


推荐阅读