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



我正在尝试使用 nodejs ( expressJS ( 中的 callback 函数从MongoDB获取插入的文档_id,但我收到此错误:

AssignmentDB.save 不是一个函数

这是我的代码。有人可以帮我如何使用回调函数获得_idMongoDB

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');

像这样更改路由器代码

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 方法将保存的记录作为对象而不是对象数组返回。此外,在模型实例上调用保存方法。

下面是在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.");
    });
});

最新更新