首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取错误: slugify: string参数预期

获取错误: slugify: string参数预期
EN

Stack Overflow用户
提问于 2021-02-06 15:56:18
回答 5查看 2.3K关注 0票数 1

我尝试为eCommerce项目创建类别,然后抛出一个错误邮递员-抛出一个错误

这些是源代码

地点:电子商务-后端\index.js

代码语言:javascript
复制
    const express = require('express')
    const env = require('dotenv')
    const app = express()
    const mongoose = require('mongoose')


    //routes
    const authRoutes = require('./routes/auth')
    const adminRoutes = require('./routes/admin/auth')
    const categoryRoutes = require('./routes/category')
    const productRoutes = require('./routes/product')
    const cartRoutes = require('./routes/cart')
    //environment variable or you can say constants
    env.config()

    //mongodb connection
    mongoose.connect(
        `mongodb+srv://${process.env.MONGO_DB_USERS}:${process.env.MONGO_DB_PASSWORD}@cluster0.nglbc.mongodb.net/${process.env.MONGO_DB_DATABASE}?retryWrites=true&w=majority`, 
        {
            useNewUrlParser: true, 
            useUnifiedTopology: true,
            useCreateIndex: true
        }
    ).then(() => {
        console.log('Database connected')
    });

    app.use(express.json())
    app.use('/api', authRoutes)
    app.use('/api', adminRoutes)
    app.use('/api', categoryRoutes)
    app.use('/api', cartRoutes)
    app.use('/api', productRoutes)

    app.listen(process.env.PORT, () => {
        console.log(`Server is running on port ${process.env.PORT}`)
    })

位置:电子商务-后端\路由\范畴.

代码语言:javascript
复制
    const express = require('express')
    const { requireSignin, adminMiddleware } = require('../common-middleware')
    const { addCategory,getCategories } = require('../controller/category')
    const router = express.Router()
    const path = require('path')
    const shortid = require('shortid')
    const multer = require('multer')

    const storage = multer.diskStorage({
        destination: function (req, file, cb) {
          cb(null, path.join(path.dirname(__dirname), 'uploads'))
        },
        filename: function (req, file, cb) {
          cb(null, shortid.generate() + '-' + file.originalname)
        }
      })

    const upload = multer({ storage })

    router.post('/category/create',requireSignin, adminMiddleware,upload.single('categoryImage'), addCategory)
    router.get('/category/getcategory', getCategories)

    module.exports = router

位置:电子商务-后端\型号\范畴.

代码语言:javascript
复制
    const mongoose = require('mongoose')
    const categorySchema = new mongoose.Schema({

        name: {
            type: String,
            required: true,
            trim: true
        },
        slug: {
            type: String,
            required: true,
            unique: true
        },
        categoryImage: {
            type: String,
        },
        parentId: {
            type: String
        }

    }, { timestamps: true})

    module.exports = mongoose.model('Category',categorySchema)

位置:电子商务-后端\控制器\范畴.

代码语言:javascript
复制
const Category = require('../models/category')
const slugify = require('slugify')

function createCategories(categories, parentId = null){

    const categoryList = []
    let category
    if(parentId == null){
        category = categories.filter(cat => cat.parentId == undefined)
    }else{
        category = categories.filter(cat => cat.parentId == parentId)
    }

    for(let cate of category){
        categoryList.push({
            _id: cate._id,
            name: cate.name,
            slug: cate.slug,
            children: createCategories(categories,cate._id)
        })
    }

    return categoryList
}

exports.addCategory = (req, res) => {

    const categoryObj = {
        name: req.body.name,
        slug: slugify(req.body.name)
    }

    if(req.file){
            categoryObj.categoryImage = process.env.API + '/public/'+ req.file.filename
    }

    if(req.body.parentId){
        categoryObj.parentId = req.body.parentId
    }

    const cat = new Category(categoryObj)
    cat.save((error,category) => {
        if(error) return res.status(400).json({ error})
        if(category){
            return res.status(201).json({ category})
        }
    })
}

exports.getCategories = (req,res) => {
    Category.find({})
    .exec((error, categories) => {
        if(error) return res.status(400).json({error})

        if(categories){

            const categoryList = createCategories(categories)

            res.status(200).json({categoryList})
        }
    })
}

这是我在电子商务后台的.env文件\ .env

代码语言:javascript
复制
PORT = 2000
MONGO_DB_USERS = mrzombit
MONGO_DB_PASSWORD = ********
MONGO_DB_DATABASE = ecommerce
JWT_SECRET = MERNSECRET
API = http://localhost:2000

我面临着这个问题,我不知道我的代码发生了什么,谢谢!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2021-03-15 04:42:34

确保您更改了邮递员标题部分中的“内容-类型”。

代码语言:javascript
复制
Content-Type: multipart/form-data; boundary=<calculated when request is sent>
票数 0
EN

Stack Overflow用户

发布于 2021-08-11 11:11:17

我只是做下面的步骤:

  1. 中删除
  2. 重新安装slugify包:您将看到 发现两个严重程度较高的漏洞,运行npm audit fix修复这些漏洞,或运行npm audit获取详细信息。
  3. 运行npm audit fix
  4. 打开新窗户!在postman中,并从/api/admin/create复制令牌并将此令牌粘贴到新窗口: body中的/api/category/create, 表格-数据: 名称(在数据库中还不存在) categoryImage (单击文件而不是文本)
票数 0
EN

Stack Overflow用户

发布于 2022-03-10 16:56:48

您也可以尝试使用下面的代码,我希望这将对您有用。

代码语言:javascript
复制
**slug: slugify(toString(req.body.name))**
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66078829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档