如何将带有变量键的json对象保存到mongodb(mongoose)
我目前正在学习Nodejs/Mongodb。我的“小型”项目包含从RESTAPI获取数据,并将其写入mongodb 首先,猫鼬部分:如何将带有变量键的json对象保存到mongodb(mongoose),json,node.js,mongodb,mongoose,Json,Node.js,Mongodb,Mongoose,我目前正在学习Nodejs/Mongodb。我的“小型”项目包含从RESTAPI获取数据,并将其写入mongodb 首先,猫鼬部分: var Schema = mongoose.Schema; var SummonerSchema = new Schema({ id : Number, name : String, profileIconId : Number, revisionDate : Number, summonerLevel : Numbe
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"}
解决这个问题的最佳方法是什么?我错过了什么?提前感谢您,并对您提出的初学者问题表示歉意 我有点解决了。。。我将架构更改为以下内容:
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);
});
}
虽然我知道我现在必须自己管理这些ID,但现在这一切都很好。但是,我从中获取数据的RESTAPI保证id是唯一的。我解决了这个问题。。。我将架构更改为以下内容:
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);
});
}
虽然我知道我现在必须自己管理这些ID,但现在这一切都很好。但是,我从中获取数据的REST API保证id是唯一的。您的mongoose版本是什么?mongoose版本是4.4.12为什么要使用这个id:Number?我想从响应中获取整个JSON对象并将其写入数据库。因此,我添加了id:Number,因为我在响应中得到了它。这不正确吗?请尝试将架构字段id:Number更改为recordId:Number,并为其赋值。更多信息您的mongoose版本是什么?mongoose版本是4.4.12为什么使用这个id:Number?我想从响应中获取整个JSON对象并将其写入数据库。因此,我添加了id:Number,因为我在响应中得到了它。这不正确吗?请尝试将架构字段id:Number更改为recordId:Number,并为其赋值。更多信息