我目前正在学习Nodejs / Mongodb。我的小#34;项目包含从REST API获取数据,并将其写入mongodb。
首先,猫鼬部分:
var Schema = mongoose.Schema;
var SummonerSchema = new Schema({
id : Number,
name : String,
profileIconId : Number,
revisionDate : Number,
summonerLevel : Number
});
var Summoner = mongoose.model('Summoner', SummonerSchema);
我从REST API获取数据,如下所示:
JSON响应
{
"23741875": {
"summonerLevel": 30,
"profileIconId": 785,
"revisionDate": 1489937599000,
"id": 23741875,
"name": "iP0ke"
}
}
显然,这不起作用,因为我不知道如何处理" 23741875"正确。运行它时我得到的是:
{"message":"Cast to ObjectId failed for value \"23741875\" at path \"_id\" for model \"Summoner\"","name":"CastError","stringValue":"\"23741875\"","kind":"ObjectId","value":"23741875","path":"_id"}
解决此问题的最佳方法是什么?我错过了什么?提前致谢并向初学者提出问题道歉!
答案 0 :(得分:0)
我有点解决了......我将架构更改为以下内容:
var SummonerSchema = new Schema({
_id: Number,
name : String,
profileIconId : Number,
summonerLevel : Number
});
至于创作部分,我所做的是
for (var key in SummonerDto){
Summoner.create({
_id : SummonerDto[key].id,
name : SummonerDto[key].name,
profileIconId : SummonerDto[key].profileIconId,
summonerLevel : SummonerDto[key].summonerLevel
}, function(err){
if(err)
console.log(err);
});
}
现在这很有效,虽然我知道我现在必须自己管理the_ids。但是,我从REST中获取数据的REST API,id将是唯一的。