Sunday, June 2, 2024
 Popular · Latest · Hot · Upcoming
156
rated 0 times [  163] [ 7]  / answers: 1 / hits: 24370  / 7 Years ago, sun, july 9, 2017, 12:00:00

I saw a few questions like mine but couldn't find any solutions that worked so I thought I'd ask.



I'm trying to pull all my data from my database so I can select parts of it in my app. I had my database working fine but when I tried to pull the pictures it failed and keeps giving me this error and also does not seem to receive the data from the database:





TypeError: Cannot read property 'find' of undefined





I have mongoose installed and everything connects so I can't figure out why it won't recognize the find property. My code is below if anyone has any ideas.





// Dependencies
var express = require(express);
var bodyParser = require(body-parser);
var mongoose = require(mongoose);
var exphbs = require(express-handlebars);
var request = require(request);

// var weapons = require(./weapons.js);

// Set mongoose to leverage built in JavaScript ES6 Promises
mongoose.Promise = Promise;


// Initialize Express
var app = express();

// Use morgan and body parser with our app
app.use(bodyParser.urlencoded({
extended: false
}));

// Make public a static dir
app.use(express.static(__dirname + /public));

app.engine(handlebars, exphbs({ defaultLayout: main }));
app.set(view engine, handlebars);

// Database configuration with mongoose
mongoose.connect(mongodb://localhost/weaponsdb);
var db = mongoose.connection;

// Show any mongoose errors
db.on(error, function(error) {
console.log(Mongoose Error: , error);
});

// Once logged in to the db through mongoose, log a success message
db.once(open, function() {
console.log(Mongoose connection successful.);
});







//routes to home page

app.get('/', function(req, res, next){

res.render(index,{ title: 'Express' });

});

app.get('/app', function(req, res, next){

res.render(app,{ layout: 'applayout' });

});

app.get(/all, function(req, res) {

// Query: In our database, go to the weapon collection, then find everything
db.weapon.find({}, function(error, found) {

// Log any errors if the server encounters one
if (error) {
console.log(error);
}
// Otherwise, send the result of this query to the browser
else {
res.json(found);
}
});
});







$.getJSON(/all, function(data) {
console.log(data)
// For each entry of that json...
for (var i = 0; i < data.length; i++) {
// Append each of the weapons' properties to the table
$(#results).append(<img src = + data[i].Picture + />);
}
});




More From » node.js

 Answers
4

If you are using mongoose you should define a schema to your collection, and than you can refer to that schema:



var weaponSchema = mongoose.Schema({
.... your model definition here ....
});

var Weapon = mongoose.model('weapon', weaponSchema);


Than you can do:



Weapon.find({})........

[#57148] Friday, July 7, 2017, 7 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
kevonmoisesf

Total Points: 693
Total Questions: 101
Total Answers: 128

Location: Reunion
Member since Mon, Dec 28, 2020
4 Years ago
kevonmoisesf questions
Sat, Jan 23, 21, 00:00, 3 Years ago
Tue, Feb 18, 20, 00:00, 4 Years ago
Wed, Jun 12, 19, 00:00, 5 Years ago
;