首页 > 解决方案 > 使用 mongoose 保存到 mongodb 失败但未显示错误

问题描述

我正在创建一个 nodejs 书店应用程序。字符串/数字/布尔值的书籍详细信息将使用 mongoose保存在 MongoDB 中,而书籍封面图像将使用 multer 保存在我的根目录中的上传文件夹中。这是我的mongoose模式

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

//Creating schema and model
var BookDataSchema = new Schema({
title: String,
author: String,
isbn: String,
price: Number,
quantity: Number,
availability: Boolean,
description: String
});

var BookData = mongoose.model('BookData', BookDataSchema);
module.exports = BookData;

这是执行保存功能的代码:

router.post('/', function (req, res) {
  var newBook = new BookData({
    title: req.body.bkname,
    author: req.body.bkauthor,
    isbn: req.body.bkisbn,
    price: req.body.bkprice,
    quantity: req.body.bkquant,
    description: req.body.bkdesc
  });
      newBook.save(function (err) {
        if (err) {
          console.log(err);
        } else {
          console.log(newBook);
          console.log('Book Details saved successfully');
        }
      });
    }, function(req, res) {upload(req, res, (err) => {
        if (err) {
          console.log(err);
          res.render('admin', {
            msg: err
          });
        } else {
          console.log(req.file);
          return res.render('admin');
        }});}
      );

主要问题是当我 console.log(newBook) 或 console.log(result) 或签入 mongo shell 时,我看到的只是{ _id: 5b4fdba80420890764ce13bf, __v: 0 },只显示 mongodb 创建的id,这意味着另一个数据不会被保存,更糟糕的是它不会继续执行其他回调函数。除了此警告之外,我没有收到任何错误:

(node:1220) [DEP0079] DeprecationWarning: Custom inspection function on Objects via .inspect() is deprecated

我测试了保存图像的代码,不包括保存其他数据的代码,它工作正常。请帮助解决可能出现的问题,并建议我如何确保仅在保存所有内容后才呈现管理页面。在_this_git_repo中查看整个项目

标签: node.jsmongodbmongoose

解决方案


推荐阅读