Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialJohn Weland
42,478 PointsTodo.find is not a function
So I am in the middle of creating my seed data and when I save the file nodemon restarts the server and then throws the following error.
C:\Users\jweland.ICS\Documents\projects\mean-todo\src\seed.js:13
Todo.find({'name': todo}, function(err, todos) {
^
TypeError: Todo.find is not a function
at C:\Users\jweland.ICS\Documents\projects\mean-todo\src\seed.js:13:7
at Array.forEach (native)
at Object.<anonymous> (C:\Users\jweland.ICS\Documents\projects\mean-todo\src\seed.js:12:7)
at Module._compile (module.js:413:34)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Module.require (module.js:367:17)
at require (internal/module.js:16:19)
at Object.<anonymous> (C:\Users\jweland.ICS\Documents\projects\mean-todo\src\app.js:9:1)
at Module._compile (module.js:413:34)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Function.Module.runMain (module.js:447:10)
at startup (node.js:141:18)
[nodemon] app crashed - waiting for file changes before starting...
my seed.js file is as follows
'use strict';
var Todo = require('./models/todo.js');
var todos = [
'reply to dad\'s tech question email from two weeks ago.',
'reveal the identity of the left shark',
'sing karaoke like nobody\'s watching',
'reply to dad\'s followup email after the first reply'
];
todos.forEach(function(todo, index) {
Todo.find({'name': todo}, function(err, todos) {
if (!err && !todos.length) {
Todo.create({completed: false, name: todo});
};
});
});
Maybe its the lack of coffee but I can't wrap my head around why .find would not be a function in this js file but it is and all the others.
John Weland
42,478 PointsThanks Matt F.
'use strict';
var mongoose = require('mongoose');
// todo.name
// todo.completed
var todoSchema = mongoose.Schema({
name: String,
completed: Boolean
});
var model = mongoose.model('Todo', todoSchema);
model.exports = model;
1 Answer
Matt F.
9,518 PointsHi John,
I do not currently have a subscription to Treehouse, so I can only offer suggestions based on the way I have utilized Mongo/Node.
One thing that I notice is that there is no connection that is explicitly opened to a Mongo database - but maybe Treehouse has it so you do not have to?
The other potential issue that I noticed is that you do not have the new keyword before mongoose.schema.
var todoSchema = new mongoose.Schema({
name: String,
completed: Boolean
});
John Weland
42,478 Pointsfigured it out
model.exports = model;
should be
module.exports = model;
Matt F.
9,518 PointsMatt F.
9,518 PointsIf you are still having issues, post the code from your Todo module and I will take a look.