使用回调函数获取插入的文档_id

时间:2019-06-22 18:37:35

标签: javascript mongodb express

我正在尝试使用_idMongoDB)中的callback函数从nodejs获取插入的文档expressJS,但出现此错误:

  

AssignmentDB.save不是函数

这是我的代码。有人可以帮我如何使用_id的回调函数来获取MongoDB

router.route("/assignment/add").post((req, res) => {
  let assignmentDb = new AssignmentDB(req.body);

    AssignmentDB
    .save(assignmentDb, function(err, records){
      if(err) throw err;
      res.status(200).send(records[0]._id); //should send the inserted documents _id
    });

});

这是我的AssignmentDB模型,如下所示:

const mongoose= require('mongoose');
const Schema = mongoose.Schema;

let AssignmentDB = new Schema({
    assignmentName: String,
    assignmentDescription: String,
    courseName: String,
    assignmentDueDate: Date,
    isNewAssignment: Boolean    
});

module.exports = mongoose.model('AssignmentDB', AssignmentDB, 'AssignmentDB');

1 个答案:

答案 0 :(得分:1)

像这样更改路由器代码

router.route("/assignment/add").post((req, res) => {
  let assignmentDb = new AssignmentDB(req.body);
    assignmentDb.save(function(err, record){
      if(err) throw err;
      res.status(200).send(record._id); //should send the inserted documents _id
    });

});

Save方法将保存的记录作为对象而不是对象数组返回。另外,在Model实例上调用save方法。

下面是在MongoDB中保存记录的示例示例

var mongoose = require('mongoose');

// make a connection
mongoose.connect('mongodb://localhost:27017/tutorialkart');

// 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!");

    // define Schema
    var BookSchema = mongoose.Schema({
      name: String,
      price: Number,
      quantity: Number
    });

    // compile schema to model
    var Book = mongoose.model('Book', BookSchema, 'bookstore');

    // a document instance
    var book = new Book({ name: 'Introduction to Mongoose', price: 10, quantity: 25 });

    // save model to database
    book.save(function (err, book) {
      if (err) return console.error(err);
      console.log(book + " saved to bookstore.");
    });

});