Mongoose Model.find is not a function?

后端 未结 5 917
温柔的废话
温柔的废话 2020-12-15 19:40

Spent hours trying to figure this out - I\'m adding a new Model to my app but it\'s failing with \"TypeError: List.find is not a function\". I have another model, Items, th

相关标签:
5条回答
  • 2020-12-15 20:00

    To import model instance and call method, for example

    modelfile.js

    const mongoose = require('mongoose');
    const Schema = mongoose.Schema;
    
    const NotificationSchema = new Schema({
        count: Number,
        color: String,
        icon: String,
        name: String,
        date: {type: Date, default: Date.now },
        read: Boolean
    });
    
    module.exports = mongoose.model('notifications', NotificationSchema);
    

    queryfile.js

    const Notification = require('./models/model-notifications');
    
    function totalInsert(online) {
      let query = { name: 'viewed count' };
      Notification.find(query,(err,result)=>{
        if(!err){
          totalCount.count = online + result.length;
          totalCount.save((err,result)=>{
            if(!err){
              io.emit('total visitor', totalCount);
            }
          });
        }
      });
    }
    
    0 讨论(0)
  • 2020-12-15 20:07

    Make sure that you have exported your Model/Schema correctly.

    module.exports = User
    

    After this above step make sure to require the Model/Schema.js file in your index.js(Main Route File)

    const Task = require('./models/task')
    

    Below are some snippets for the explanation. All the best.!

    0 讨论(0)
  • 2020-12-15 20:08

    i faced this issue . to solve this , you need to understand one logic . you need to call .find as promise to model which is imported from models file.

    example:

    const member = require('..// path to model')
    
    //model initiation
    const Member = new member();
    
    exports.searchMembers = function (req,res) {
    
    
    Member.find({},(err,docs)=>{
        res.status(200).json(docs)
    })
    
    }
    

    this code dont work because i called find() to initiated schema

    code that works :

    exports.searchMembers = function (req,res) {
    
    
    member.find({},(err,docs)=>{
        res.status(200).json(docs)
    })
    
    }
    

    here i called .find() directly to imported model

    0 讨论(0)
  • 2020-12-15 20:21

    Your module export is incorrect

    var mongoose = require('mongoose');
    var Schema = mongoose.Schema;
    
    var listSchema = new Schema({
        name: { type: String, default: datestring + " List" }
    });
    
    **mongoose.exports = mongoose.model('List', listSchema);** <!-- this is wrong -->
    

    it should be

    **module.exports = mongoose.model('List', listSchema)**
    
    0 讨论(0)
  • 2020-12-15 20:21

    You've defined incorrect module.exports.

    mongoose.exports = mongoose.model('List', listSchema);

    This should be

    module.exports = mongoose.model("List", listSchema);

    0 讨论(0)
提交回复
热议问题