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