Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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
如何将带有变量键的json对象保存到mongodb(mongoose)_Json_Node.js_Mongodb_Mongoose - Fatal编程技术网

如何将带有变量键的json对象保存到mongodb(mongoose)

如何将带有变量键的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

我目前正在学习Nodejs/Mongodb。我的“小型”项目包含从RESTAPI获取数据,并将其写入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"}

解决这个问题的最佳方法是什么?我错过了什么?提前感谢您,并对您提出的初学者问题表示歉意

我有点解决了。。。我将架构更改为以下内容:

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,并为其赋值。更多信息