我有一个类似的模式
var csData = new Schema({
csgo_number: Number,
last_updated: Number,
items: {type: Object, default: {}}
}, { minimize: false });
由于项目是一个大列表,我决定将其作为哈希图,以便更快地访问它。
items:{
item1: {
price: 2.00
},
item2:{
price: 1.00
},
item3:{
price: 3.00
}
}
我正在循环浏览一堆html,当我遇到每一个新项目时,我都会对其进行解析和存储
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')}
});
});
尽管我没有犯错。我的数据无法保存。这是因为我的新物品没有id吗?我用_id尝试了它,但它仍然没有保存。
自猫鼬5.1.0以来,出现了一种新类型,地图。Wich就是这么做的:
var csData = new Schema({
csgo_number: Number,
last_updated: Number,
items: {
type: Map,
of: String,
default: {}
}
}, { minimize: false });
要使用它,只需:
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')}
});
});
获取它:
var item1 = 'awp'
csData.findOne({"csgo_number": 1}, function(err, csgoDB){
var value = csgoDB.items.get('item1.price');
});