You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mongoose调用find方法报错TypeError: event.find is not a function求助

问题根因

find()是Mongoose模型的静态方法,只能直接通过你导出的EventModel调用,不能在模型的实例对象上调用。你在查询函数里先执行了const event = new EventModel()创建了模型实例,这个实例上只有save()这类实例方法,没有find静态方法,因此触发类型错误。
你写的新增函数逻辑符合规范:save()是模型实例方法,因此new实例后调用save可以正常执行。

修正后的查询函数代码

exports.findSimilarEvents = async function(eventData, eventLoggedFrom) {
  // 直接用模型调用find静态方法,不需要创建实例
  let similarEvents = await EventModel.find({
    eventData: eventData
  });
  // 原循环条件是赋值操作=,会导致死循环,修改为小于判断<
  for (var i = 0; i < similarEvents.length; i++) {
    console.log("found similar event");
    console.log(similarEvents[i]);
  }
}

额外优化建议

你当前的Schema定义里,日期类型的默认值写的是Date.now(),会在服务启动时就执行一次,所有新建文档的对应字段都会存服务启动的时间,不符合存文档创建/更新时间的需求,建议修改为:

const eventSchema = new mongoose.Schema({
    // 去掉Date.now的括号,传入函数本身,新建文档时才会执行获取当前时间
    eventTime: { type: Date, default: Date.now },
    eventLoggedFrom: String,
    eventData: Object,
    eventID: String,
    ticketID: { type: String, default: "" },
    ticketStatus: { type: String, default: "" },
    eventLastUpdated: { type: Date, default: Date.now },
})

内容的提问来源于stack exchange,提问作者andeke07

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 10:27:02