Last active
August 29, 2015 14:02
-
-
Save gclsoft/e3c01ed3ef351b6b83d1 to your computer and use it in GitHub Desktop.
mongoose subdocemnet
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//数据库是 | |
{ | |
"__v": 1, | |
"_id": "538f5f0f6195a184108c8bd8", | |
"title": "GameTitle", | |
"item": [{ | |
"_id": "538f5f0f6195a184108c8bd6", | |
"name": "itemOne", | |
"men": [{ | |
"_id": "5390cccf0a84f41f37082874", | |
"user": "id22222222", | |
"score": 2000 | |
}, { | |
"_id": "2390cccf0a84f41f37082873", | |
"user": "id33333333", | |
"score": 1000 | |
}] | |
}, { | |
"_id": "538f5f0f6195a184108c8bd7", | |
"name": "itemTwo", | |
"men": [] | |
}], | |
"status": 1 | |
} | |
var MenSchema = new mongoose.Schema({ | |
user: 'String', | |
score: { | |
type: Number, | |
default: 0 | |
} | |
}); | |
var ItemsSchema = new mongoose.Schema({ | |
name: String | |
,men: [MenSchema] | |
}); | |
ListsSchema = new mongoose.Schema({ | |
title: { | |
type: String, | |
required: true | |
} | |
,item: [ItemsSchema] | |
}); | |
var Items = mongoose.model('item', ItemsSchema); | |
var Lists = mongoose.model('lists', ListsSchema); | |
var Men = mongoose.model('men', MenSchema); | |
//代码是: Insert and update: | |
function commit(sId, sItem, sUser, sIncreaseScore) { | |
Lists.findOne({, "_id": sId, | |
"item.name": sItem | |
}, null, function(err, documents) { | |
if (!err) { | |
if (documents != null) { | |
Lists.findOne({ | |
"_id": sId, | |
"item.name": sItem, | |
"item.men.user": sUser | |
}, null, function(err, subDoc) { | |
if (!err) { | |
if (subDoc != null) { | |
//increase user score | |
//!!!!!!!!!!!!!But subDoc will get all arrays of item.men, so I can't update it correctly | |
} else { | |
//inser new user score | |
var userData = new Men({ | |
user: sUser, | |
score: sScore | |
}); | |
documents.item[0].men.push(userData); | |
documents.save(function(err) { | |
if (!err) { | |
///!!!!!!!!!!!!!!Will come this | |
console.log("documents error on save!"); | |
} else { | |
console.log("save documents ok!"); | |
} | |
}); | |
} | |
} | |
}); | |
} | |
} else { | |
console.log("not find the game item!"); | |
} | |
} | |
); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment