我正在尝试编写一个将在 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/