已成功插入数据,但未使用均值堆栈将其反映在mongo DB中

时间:2019-06-07 04:28:51

标签: node.js mongodb express mean-stack

我创建了一个普通的堆栈应用程序。 正在将数据从angular传递到节点js。 在节点js中,一切正常,并获得插入成功消息。但是在数据库中找不到数据

节点index.js

// require('./app/route/dart.route.js')(app);
var mongoose = require('mongoose');

// make a connection
mongoose.connect('mongodb://localhost:27017/dart', { useNewUrlParser: true });

// get reference to database
var db = mongoose.connection;

db.on('error', console.error.bind(console, 'connection error:'));

db.once('open', function () {
  console.log("Connection Successful!");
})
app.post('/dart_create', function (req, res) {
   console.log('Request body output '
     + JSON.stringify(req.body));
  try {
    db.collection("darts").insertMany(req.body);
    console.log("Data inserted successfully");
  } catch (e) {
    console.log(e);
  }
});

节点控制台

enter image description here

角度浏览器控制台

enter image description here

Mongo DB屏幕截图 enter image description here

请帮助我调试问题。我的数据哪里去了......

2 个答案:

答案 0 :(得分:0)

在MongoDB中添加数据是一个异步过程,请使用.then或使用async/await

使用async/await

app.post('/dart_create', async function (req, res) {
  try {
    const result = await db.collection("darts").insertMany(req.body);
    console.log("Result", result);
    console.log("Data inserted successfully");
    return result;
  } catch (e) {
    console.log(e);
    return e;
  }
});

插入许多返回响应,例如插入成功后

{
   "acknowledged" : true,
   "insertedIds" : []
}

检查是否插入了insertedIds的可验证长度和全部长度。

答案 1 :(得分:0)

您对MongoDB的插入操作失败,但是您的try and catch块未捕获错误,因为插入操作是异步操作。

因此,基本上,有两种方法可以解决此问题:

使用async/wait

app.post('/dart_create', async function (req, res) {
   console.log('Request body output '
     + JSON.stringify(req.body));
  try {
    await db.collection("darts").insertMany(req.body);
    console.log("Data inserted successfully");
  } catch (e) {
    console.log(e);
  }
});

then使用promises语法:

app.post('/dart_create', function (req, res) {
   console.log('Request body output '
     + JSON.stringify(req.body));
  db
    .collection("darts")
    .insertMany(req.body)
    .then(() => {
      console.log("Data inserted successfully");
    })
    .catch(e => {
      console.log(e);
    })
});

您应该能够捕获该错误并从那里解决您的问题。