node.js - 使用 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中查看整个项目
解决方案
推荐阅读
- maven - 从 java 应用程序调用 mlcp 的任何方式
- c - C - 拆分字符串并进入数组
- javascript - 如何将“数据”属性存储在 contentEditable 容器内的节点中?
- c# - ASP.Net MVC Web App 我可以/应该安全地存储第 3 方登录详细信息吗
- regex - .htaccess:仅针对特定请求重定向子文件夹根并保留参数
- eclipse - Wireshark 在 Eclipse 中未检测到来自 java 程序的数据包
- java - 使用多个 EJB 实现接口
- php - Yii2 CacheSession“随机”销毁
- php - 根据 ROW 插入数据
- android - 如何从 Android 上的 Firebase 中的特定节点检索所有子数据?