Sequelize - How can I return JSON objects of the database results only?

If you want to work only with the values of an instance try to call get({plain: true}) or toJSON()

tags.findOrCreate( { 
    where: { tagName: tag }
})
.then(function(tagData){
     console.log(tagData.toJSON());
})

Though poorly documented, this does exist in Sequelize.

Couple Ways:

1. For any response object that resulted from a query, you can extract only the data you want by appending .get({plain:true}) the the response like so:

Item.findOrCreate({...})
      .spread(function(item, created) {
        console.log(item.get({
          plain: true
        })) // logs only the item data, if it was found or created

Also make sure you are using the spread callback function for your type of dynamic query promise. And note that you have access to a boolean response, created, which signifies whether or not a create query was executed.

2. Sequelize provides the raw option. Simply add the option {raw:true} and you will receive only the raw results. This will work on an array of results, the first method should not, as get will not be a function of an array.