正在将hashmap保存到mongoose



我有一个类似的模式

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');
});

最新更新