javascript - 在一个 MongoDb 连接中执行多次提交

标签 javascript mongodb promise

我正在尝试编写一个将在 Node.js 上本地运行的 JavaScript 应用程序。然后,我希望用户输入命令来从 MongoDb 连接插入、更新或删除数据。

换句话说,我希望 MongoDb 连接在 Node.js 运行时保持打开状态,以便用户的命令能够执行其打算执行的操作。

我尝试使用多个连接,但这似乎不适用于 promise 堆栈。用户将插入一个对象,但如果他们随后尝试删除该对象,则不会发生任何事情。

const MongoClient = require('mongodb').MongoClient;
const uri = require('./mongoConnection.json'); // this is my connection information
const mongoClient = new MongoClient(uri.connectionString, { useNewUrlParser: true });
mongoClient.connect(function(err, db){
    var dbo = db.db("TestBotDb").collection("Test");
    dbo.insertOne({ "data1" : "new data", "data2" : "new data2" });    

    var result = dbo.findOne({ "data2" : "new data2" });
    dbo.deleteOne({ "_id" : result._id});

});

由于插入似乎不会立即发生,所以我不知道以后如何将其分解为函数。我不想在应用程序运行时等待插入才能尝试删除对象。我不一定知道用户何时会插入以及何时会尝试删除。

最佳答案

您可以使用 async/await 来执行此操作。

const MongoClient = require('mongodb').MongoClient;
const uri = require('./mongoConnection.json'); // this is my connection information
const mongoClient = new MongoClient(uri.connectionString, { useNewUrlParser: true });
mongoClient.connect(async (err, db) =>{
    var dbo = db.db("TestBotDb").collection("Test");
    await dbo.insertOne({ "data1" : "new data", "data2" : "new data2" }); // Waits until your data insert or error

    var result = await dbo.findOne({ "data2" : "new data2" }); // Waits until read data or error
    await dbo.deleteOne({ "_id" : result._id}); // // Waits until delete data or error

});

关于javascript - 在一个 MongoDb 连接中执行多次提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57530380/

相关文章:

javascript - 如何获取由php脚本动态生成的div值?

javascript - 在 Node.js、React.js 和 Python 应用程序之间共享配置

javascript - 如何向 MongoDB 脚本添加连续反斜杠或字符

php - 安装 mongoDB 驱动 php 7.2.3

javascript - $q.all(p1, p2).then() 似乎在两个 promise 都得到解决之前就被触发了

javascript - 根据从事件中获取的参数重定向到 URL

javascript - 向 Node 发送 ajax get 请求,响应未定义

mongodb聚合-嵌套组

javascript - 使用 ElasticSearch javascript 客户端创建索引,promise 不返回

javascript - 使用 AngularJS 立即返回已解决的 promise