I have a schema like so
var csData = new Schema({
csgo_number: Number,
last_updated: Number,
items: {type: Object, default: {}}
}, { minimize: false });
Due to items being a large list I decided to make it a hash map to access it faster.
items:{
item1: {
price: 2.00
},
item2:{
price: 1.00
},
item3:{
price: 3.00
}
}
I'm looping through a bunch of html i'm parsing and storing each new item when I come across it.
var item1 = 'awp'
csData.findOne({"csgo_number": 1}, function(err, csgoDB){
csgoDB.items[item1] = {
price: 2.00
}
csgoDB.save(function(err){
if(err){console.log('something went wrong')}
});
});
Even though I get no error. My data doesn't save. Is this because I don't have a _id for my new item? I tried it with an _id and it still didn't save.
Since mongoose 5.1.0 there's a new type, Map. Wich does that:
var csData = new Schema({
csgo_number: Number,
last_updated: Number,
items: {
type: Map,
of: String,
default: {}
}
}, { minimize: false });
To use it, just:
var item1 = 'awp'
csData.findOne({"csgo_number": 1}, function(err, csgoDB){
csgoDB.items.set('item1.price', 2.00);
csgoDB.save(function(err){
if(err){console.log('something went wrong')}
});
});
And to fetch it:
var item1 = 'awp'
csData.findOne({"csgo_number": 1}, function(err, csgoDB){
var value = csgoDB.items.get('item1.price');
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With