Node.js Mongoose save()不适用于所有模型

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

我使用Nodejs、Express和Mongoose来存储数据。我有两种型号:Contact和Shop。我的联系人模式有效,它将数据发送到我的数据库。但商店根本不会,我正在拔头发,不明白为什么。目前我正在尝试硬编码数据,以便将其保存到数据库中。数据库已连接,因为联系人模型发送数据没有问题

在MongoDB中,我有一个名为“shops”的集合,我想将数据插入其中

我的店铺模式:

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错误。我将创建一个新问题来包括我的目录结构。我不认为这是一个数据库问题。