Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 将hashmap保存到mongoose?_Node.js_Mongoose_Mongoose Schema - Fatal编程技术网

Node.js 将hashmap保存到mongoose?

Node.js 将hashmap保存到mongoose?,node.js,mongoose,mongoose-schema,Node.js,Mongoose,Mongoose Schema,我有一个这样的模式 var csData = new Schema({ csgo_number: Number, last_updated: Number, items: {type: Object, default: {}} }, { minimize: false }); 由于列表很大,我决定将其设置为哈希映射,以便更快地访问它 items:{ item1: { price: 2.00 }, item2:{

我有一个这样的模式

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尝试了它,但它仍然没有保存。

因为mongoose 5.1.0有了一种新类型。威奇这样做:

var csData=新模式({
csgo_编号:编号,
上次更新:编号:,
项目:{
类型:地图,
其中:字符串,
默认值:{}
}
},{minimize:false});
要使用它,只需:

var item1='awp'
findOne({“csgo_number”:1},函数(err,csgoDB){
csgoDB.items.set('item1.price',2.00);
csgoDB.save(函数(错误){
if(err){console.log('something gording erre')}
});
});
要取回它:

var item1='awp'
findOne({“csgo_number”:1},函数(err,csgoDB){
var value=csgoDB.items.get('item1.price');
});

尝试使用
项:{type:Schema.Types.Mixed,默认值:{}}
是的,这很有效。在保存之前,我还需要添加items.markModified