2017-03-26 78 views
1

我目前在學習Nodejs/Mongodb。我的「小」項目包含從REST API獲取數據,並將其寫入MongoDB。如何用變量鍵保存json對象到mongodb(mongoose)

首先,貓鼬部分:

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

什麼是你的貓鼬版本? – pankaj005

+0

貓鼬版本是4.4.12 –

+0

你爲什麼使用這個ID號碼? –

回答

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。但是,我從RACK API獲取數據的保證,該ID將是唯一的。

相關問題