错误:.find(...) 不是函数 nodejs mongoose
Posted
技术标签:
【中文标题】错误:.find(...) 不是函数 nodejs mongoose【英文标题】:error : .find(…) is not a function nodejs mongoose 【发布时间】:2021-08-28 15:50:13 【问题描述】:我定义了一个控制器,代码如下:
const paymentModel = require("../../models/University");
class PaymentController
async getPaymentList(req , res)
const list = await paymentModel.find()
.select("amount description payDate payId" ).limit(20);
res.send(list);
像下面这样的路由器:
const router = require ("express").Router();
const controller = require("../http/controller/PaymentController");
router.get('/' ,controller.getPaymentList);
module.exports= router;
型号:
const mongoose = require ("mongoose");
const schemaPay = new mongoose.Schema(
payId :type:Number, required: true,
amount :type :String , required: true,
description :type :String , required:true,
courseId:[schemaCourse] ,
studentId:[schemaStudent],
payDate :String ,
);
const paymentModel= mongoose.model('StudentPayments' , schemaPay);
module.exports=paymentModel ;
当我使用邮递员测试 api 时出现错误:paymentModel.find 不是函数 谁能帮我看看问题出在哪里?
【问题讨论】:
您正在将 paymentModel 导出到一个对象中,所以const paymentModel = require('....')
而不是 const paymentModel = require('...')
您已经创建了 schemaPay 并导出了 paymentModel 这就是它给出错误的原因
更改您的导出module.exports = mongoose.model('schemaPay', schemaPay);
我忘记粘贴这部分代码:const paymentModel= mongoose.model('StudentPayments' , schemaPay);
我有几个模型,所以我使用 导出所有模型
【参考方案1】:
对于您的模型,您正在导出一个包含密钥 paymentModel 的对象。
为了从该对象内部访问 paymentModel,您必须执行以下操作之一:
const paymentModel = require("../../models/University");
或
const UniversityModel = require("../../models/University"); //then access paymentModel like UniversityModel.paymentModel
如果您不想这样做,也可以只导出一个特定模型,但您说您有多个导出,所以是的。
【讨论】:
以上是关于错误:.find(...) 不是函数 nodejs mongoose的主要内容,如果未能解决你的问题,请参考以下文章
TypeError:Task.find 不是 Node Js 中的函数
NodeJS - .save() 不是一个函数。无法通过猫鼬创建集合
nodejs/express express.createserver 不是函数