Mongoose TypeError:TypeError:无法使用“in”运算符在未定义中搜索“pluralization”

Posted

技术标签:

【中文标题】Mongoose TypeError:TypeError:无法使用“in”运算符在未定义中搜索“pluralization”【英文标题】:Mongoose TypeError: TypeError: Cannot use 'in' operator to search for 'pluralization' in undefined 【发布时间】:2021-11-03 21:45:32 【问题描述】:

不太清楚这里发生了什么。我看到其他人之前遇到过这个错误,但我想我只是理解不够,无法将他们做错的事情与我做错的事情进行比较。

这只是一个学习 MERN 堆栈的简单项目。这里的目标相对简单:将 PDF 文件上传到 mongoDB 数据库,检索该 PDF 文件,并将其显示到预览窗口。可能是 iframe,或者更简单的东西,这取决于我可用的选项。目前,我的主要问题是后端。

所以,这是我的代码:

index.js(当然省略了用户名和密码):

import express from 'express';
import mongoose from 'mongoose';
import bodyParser from 'body-parser';
import cors from 'cors';
import  router  from './routes/image-route.js';

const app = express();
const port = 5000;

app.use(bodyParser.json(limit: "20mb", extended: true));
app.use(bodyParser.urlencoded(limit: "20mb", extended: true));

app.use('./routes/image-route.js', router)

app.use(cors());

const CONNECTION_URL = 'mongodb+srv://<username>:<password>@cluster0.xxpzv.mongodb.net/myFirstDatabase?retryWrites=true&w=majority';

async function main() 
    await mongoose.connect(CONNECTION_URL).then(() => console.log("SERVER CONNECTION ESTABLISHED"));


main().catch(err => console.log(err));

app.listen(port, () => console.log(`listening at port $port`));

image_model.js:

import mongoose from 'mongoose';

const imageSchema = mongoose.Schema(
    name: String,
    img:
    
        data: Buffer,
        contentType: String
    
);

const imageData = mongoose.model('image', 'imageSchema')

export  imageData ;

image-route.js:

import express from 'express';
import  getImage, postImage  from '../controllers/image_controller.js';

const router = express.Router();

router.get('/', getImage);
router.post('/', postImage);

export  router ;

image_controller.js:

import  imageData  from '../models/image_model.js';

export const getImage = async (req, res) => 
    try 
        const allImages = await imageData.find();
        req.status(200).json(allImages);
        console.log('Successfully submitted');
     catch (err) 
        res.status(404).json(message: error.message);
    


export const postImage = async (req, res) => 
    const image = req.body;
    const newImage = new imageData(image);

    try 
        await newImage.save();
        res.status(201).json(newImage);
     catch (error) 
        res.status(409).json(message: error.message);
    

这是我在尝试启动服务器时收到的错误:

我真的不知道还能说什么。我已经尝试过针对类似问题看到的解决方案(据我所知),但他们的问题显然与我的不太一样。如果还有其他任何人需要知道来帮助我解决这个问题,我会提供任何必要的。提前致谢。

【问题讨论】:

【参考方案1】:

文件:image_model.js

const imageData = mongoose.model('image', 'imageSchema')
 // imageSchema is not a string

改为:

const imageData = mongoose.model('image', imageSchema)

【讨论】:

以上是关于Mongoose TypeError:TypeError:无法使用“in”运算符在未定义中搜索“pluralization”的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:将循环结构转换为 mongodb/mongoose 的 JSON

NodeJS Mongoose record.save TypeError

获取 TypeError:path.split 不是 Mongoose 中的函数

Mocha API 测试:获取“TypeError:app.address 不是函数”

Mongoose TypeError:TypeError:无法使用“in”运算符在未定义中搜索“pluralization”

TypeError:无法设置 null - 节点和 Mongoose 的属性“brief_title”