Node.js Mongoose save()不适用于所有模型
我使用Nodejs、Express和Mongoose来存储数据。我有两种型号:Contact和Shop。我的联系人模式有效,它将数据发送到我的数据库。但商店根本不会,我正在拔头发,不明白为什么。目前我正在尝试硬编码数据,以便将其保存到数据库中。数据库已连接,因为联系人模型发送数据没有问题 在MongoDB中,我有一个名为“shops”的集合,我想将数据插入其中 我的店铺模式:Node.js Mongoose save()不适用于所有模型,node.js,express,mongoose,Node.js,Express,Mongoose,我使用Nodejs、Express和Mongoose来存储数据。我有两种型号:Contact和Shop。我的联系人模式有效,它将数据发送到我的数据库。但商店根本不会,我正在拔头发,不明白为什么。目前我正在尝试硬编码数据,以便将其保存到数据库中。数据库已连接,因为联系人模型发送数据没有问题 在MongoDB中,我有一个名为“shops”的集合,我想将数据插入其中 我的店铺模式: const mongoose = require('mongoose'); const Schema = mongoo
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const ShopSchema = new Schema({
shopName: {
type: String,
required: true
},
shopImage: {
type: String,
required: true
},
shopDescription: {
type: String,
required: true
},
shopCategory: {
type: String,
required: true
},
}, { timestamps:true });
const Shop = mongoose.model('Shop', ShopSchema);
module.exports = Shop;
我的店铺路由器:
const express = require('express');
const router = express.Router();
const Shop = require('../models/shopModel.js');
router.get('/add-shop', (req, res) => {
ShopCategory.find()
.then(result => res.render('shop/add-shop', { title: "Add a Shop" }))
.catch(err => console.log(err));
});
router.post(('/add-shop', (req, res) => {
const shop = new Shop({
shopName: "A shop name",
shopImage: '88.jpg',
shopDescription: 'This is a description',
shopCategory: "Food"
});
shop.save()
.then(result => console.log(result))
.catch(err => console.log(err));
}));
module.exports = router;
我的app.js
const express = require('express');
const mongoose = require('mongoose');
const app = express();
mongoose.Promise = global.Promise;
const db = 'mongodb+srv://user:pass@nodetuts-6iczn.mongodb.net/shop?retryWrites=true&w=majority';
mongoose.connect(db, { useNewUrlParser: true, useUnifiedTopology: true })
.then(result => app.listen(3000))
.catch(err => console.log(err));
const shopRoutes = require('./routes/shop.js');
app.use(shopRoutes);
我不知道我错过了什么。我把所有的东西都和我的联系人模型进行了比较,结果也没有错误。我检查了我是否已连接到数据库,我已连接。您已经为您的
帖子请求定义了'/add shop'
路由。解决此错误的简单方法是删除您在'/add shop'
路由之前定义的()
括号,因此,代码将如下所示
router.post('/add-shop', (req, res) => {
const shop = new Shop({
shopName: "A shop name",
shopImage: '88.jpg',
shopDescription: 'This is a description',
shopCategory: "Food"
});
shop.save()
.then(result => console.log(result))
.catch(err => console.log(err));
});
希望这有帮助 您必须为您的帖子
请求定义'/add shop'
路由解决此错误的简单方法是删除您在'/add shop'
路由之前定义的()
括号,因此,代码如下所示
router.post('/add-shop', (req, res) => {
const shop = new Shop({
shopName: "A shop name",
shopImage: '88.jpg',
shopDescription: 'This is a description',
shopCategory: "Food"
});
shop.save()
.then(result => console.log(result))
.catch(err => console.log(err));
});
希望这有帮助 save()
之后的catch部分是否记录了任何错误?您可以尝试Model.create()
而不是Model.save()
。这些文件没有错误。但我有一个新的怀疑,这是由于我的目录结构,我没有得到的路线张贴。当我在/add shop页面上刷新它时,即使URL端点与/add shop保持相同,我也会收到404错误。我将创建一个新问题来包括我的目录结构。我认为这不是数据库问题。在save()
之后的catch部分是否记录了任何错误?您可以尝试Model.create()
而不是Model.save()
。这些文件没有错误。但我有一个新的怀疑,这是由于我的目录结构,我没有得到的路线张贴。当我在/add shop页面上刷新它时,即使URL端点与/add shop保持相同,我也会收到404错误。我将创建一个新问题来包括我的目录结构。我不认为这是一个数据库问题。