2017-12-16 69 views
0

mongodbデータベースではfloatをキーとして使用しようとしています。それぞれの金額(0.01:10など)をそれぞれ保存する必要があるためです。しかし、私はmongoose(エクスプレスを使用してノードサーバー)を介してデータを保存しようとすると、通常の(ストリング)キーでデータをdbに保存するだけです。Mongooseはfloatをキーとして使用します

これは私のスキーマです:

var ProtokollSchema = new Schema({ 
"date": String, 
"0.01": {type: Number, default: 0}, 
"0.02": {type: Number, default: 0}, 
"0.05": {type: Number, default: 0}, 
"0.10": {type: Number, default: 0}, 
"0.20": {type: Number, default: 0}, 
"0.50": {type: Number, default: 0}, 
"1.00": {type: Number, default: 0}, 
"2.00": {type: Number, default: 0}, 
... 

});

これは、データを設定急行機能である:

.post(function(req, res) { 
    var protokoll = new ProtokollSchema(); 
    protokoll["date"] = req.body["date"]; 
    protokoll["0.01"] = req.body.data["0.01"]; 
    protokoll["0.02"] = req.body.data["0.02"]; 
    protokoll["0.05"] = req.body.data["0.05"]; 
    protokoll["0.10"] = req.body.data["0.10"]; 
    protokoll["0.20"] = req.body.data["0.20"]; 
    protokoll["0.50"] = req.body.data["0.50"]; 
    protokoll["1.00"] = req.body.data["1.00"]; 
    protokoll["2.00"] = req.body.data["2.00"]; 
    ... 

    protokoll.save(function(err) { 
     if (err) res.json(err); 
     res.json({ message: "Comment successfully added!"}); 
    }); 
}) 

は、解決策はありますかそれだけで行うことは可能ではないでしょうか?

答えて

0

実際の問題は、MongoDBのは、単にそのキーにドットをサポートしていないということでした(this questionを参照)当初、私はこの問題を考えましたマングースのスキーマでしたが、明らかにそうではありませんでした。

1
  1. スキーマ内のすべてのキーは、キーストリングが通常の文字列、フロートなどのように見える文字列でなければなりません。

  2. req.body.dataが本当に{"0.01":xxx、 "0.02":xxx、...}のような値であることを確認してください。

  3. あなたは、ドキュメントを作成するためにモデルを使用する必要がある代わりに、スキーマ

    //wrong way 
    var protokoll = new ProtokollSchema(); 
    
    //Right way - Use the schema to generate a model and use model to new a docuemnt. 
    var Protokoll = mongoose.model('Protokoll', ProtokollSchema); 
    var protokoll = new Protokoll({"0.01": xxx, "0.02": xxx, ...}); 
    
+0

ありがとうございます!これでデータはdbに保存されます。しかし、今はmongodbがドットをオブジェクトキーとして解釈するという問題があります。私は構造が得られます:0> 01、1> 00など。どのようにこれを修正するための任意のアイデア? – Dedpul

+0

これで答えが見つかりました:https://stackoverflow.com/questions/12397118/mongodb-dot-in-key-name – Dedpul

関連する問題