user5854440
user5854440

Reputation: 281

Mongoose: model not saving data passed to it

I'm trying to send an object full of data I scraped to a collection on my server. Problem is, it doesn't save whenever I send it to the backend. I'm sending the information to a collection named events. The content constantly sends back a success! You saved a new item. Everytime I check events, however, it's empty. Here's my code:

Controller

var CronJob = require('cron').CronJob;
var scrape = require("../models/dataScrape");

//code requesting data...

for(var i = 0; i < titles.length; i++){
                data.push({"festival" : titles[i], "date" : dates[i], "url" : links[i]});
}

var _id = "12345";
var body = {"_id" : _id, "events" : data};

var job = new CronJob('0*/1 * * * *', function(req, res){
    scrape.eventList.find({}, function (err, count) {
        if (!err && count.length == 0) {
            var newEvents = new scrap.eventList(body);
            newEvents.save(function(err, data){
                if(error){
                    console.log("Error: " + err);
                }else{
                    console.log("success! You saved a new item.");
                }
            });
        }else{
            scrape.eventList.update({_id: body._id}, body, function(err){
                console.log("update");;
                if(err){
                    console.log(err);
                }else{
                    console.log("success! you updated an item.");
                }
            });
        }
    });
}

Model

var mongoose = require("mongoose");
mongoose.connect("mongodb://localhost/BackYardBrewing");

var eventsSchema = mongoose.Schema({
    id          : {type : String},
    events      : [{
                        festival : String,
                        date     : String,
                        url      : String,
                    }],
})

module.exports = {
    eventList      : mongoose.model("event", eventsSchema),
}

I've used a very similar format on another model, and it saves data just fine. Any hints?

Upvotes: 0

Views: 334

Answers (1)

The Falvert
The Falvert

Reputation: 193

In the if statement of the save method if(error) should be if(err), error doesn't exist.

According to mongoose, your save method should be..

newEvents.save(function(err){
            if(err){
                console.log("Error: " + err);
            }else{
                console.log("success! You saved a new item.");
            }
        });

Or you can use the create method instead

scrap.eventList.create(newEvents, function(err, doc){
    if(err)
        { console.log("Error:" + err);}
    else{ console.log("success! You saved a new item.");}
});

Upvotes: 1

Related Questions