【问题标题】:error : .find(…) is not a function nodejs mongoose错误:.find(...) 不是函数 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);
  • 我有几个模型,所以我使用 {} 导出所有模型

标签: javascript node.js api mongoose get


【解决方案1】:

对于您的模型,您正在导出一个包含密钥 paymentModel 的对象。

为了从该对象内部访问 paymentModel,您必须执行以下操作之一:

const  {paymentModel} = require("../../models/University");

const  UniversityModel = require("../../models/University"); //then access paymentModel like UniversityModel.paymentModel

如果您不想这样做,也可以只导出一个特定模型,但您说您有多个导出,所以是的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-17
    • 2014-12-29
    • 2016-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多