Skip to content

Instantly share code, notes, and snippets.

@aheckmann
Created March 29, 2013 19:53
Show Gist options
  • Save aheckmann/5273198 to your computer and use it in GitHub Desktop.
Save aheckmann/5273198 to your computer and use it in GitHub Desktop.
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var assert = require('assert')
console.log('\n===========');
console.log(' mongoose version: %s', mongoose.version);
console.log('========\n\n');
var dbname = 'testing_1408';
console.log('dbname: %s', dbname);
mongoose.connect('localhost', dbname);
mongoose.connection.on('error', function () {
console.error('connection error', arguments);
});
var PreferenceSchema = new Schema ({
_id: {type: Schema.ObjectId, auto: true},
preference: { type: String, required: true },
value: { type: Schema.Types.Mixed }
}, { versionKey: false });
var BrandSchema = new Schema({
settings: {
preferences: [PreferenceSchema],
}
});
var A = mongoose.model('A', BrandSchema);
mongoose.connection.on('open', function () {
mongoose.set('debug', true)
var a = new A({
settings: {
preferences:
[ { preference: 'group_colors', value: false },
{ preference: 'can_force_orders', value: true },
{ preference: 'hide_from_buyers', value: true },
{ preference: 'no_orders', value: '' }
]
}
})
a.save(function (err, a) {
if (err) return done(err);
A.findById(a, function (err, doc) {
console.error('found settings', doc.settings);
var newData = {
settings: {
preferences:
[ { preference: 'group_colors', value: true },
{ preference: 'can_force_orders', value: true },
{ preference: 'custom_csv', value: '' },
{ preference: 'hide_from_buyers', value: false },
{ preference: 'nozoom', value: false },
{ preference: 'no_orders', value: false }
]
}
}
doc.set('settings', newData.settings, { merge: true });
doc.save(function (err) {
if (err) return done(err);
A.findById(doc, function (err, doc) {
if (err) return done(err);
console.log('found settings after update', require('util').inspect(doc.settings, { depth: null }));
done();
})
})
});
})
});
function done (err) {
if (err) console.error(err.stack);
mongoose.connection.db.dropDatabase(function () {
mongoose.connection.close();
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment