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
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);
}
});
}
});
}
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.!
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
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)**
You've defined incorrect module.exports.
mongoose.exports = mongoose.model('List', listSchema);
This should be
module.exports = mongoose.model("List", listSchema);