MongoDBに配列とともに第1レベルのデータを含むJSONオブジェクトを記述しようとしています。MongooseはJSON配列からサブ文書を作成しません
代わりに、すべての第1レベルのデータが格納されますが、配列に含まれるものはすべて格納されません。サーバーが受け取るデータをログに記録すると、オブジェクト全体が表示され、私のMongooseコードに何か問題があると信じられます。
は、ですから、例えば、私はこのような何かを送信する場合:
issueId: "test1",
issueTitle: "testtest",
rows: [
{order:1,data: [object]},
{order:2,data: [object]},
]
のみ以下が格納されます:
issueId: "test1",
issueTitle: "testtest",
lastUpdated: Date,
I持ってMongoのための次のモデル:
//model.js
var mongoose = require('mongoose');
var model = mongoose.Schema({
issueId : String,
issueTitle : String,
lastUpdated : {type: Date, default : Date.now},
rows : [{
order : Number,
data : [
{
title : String,
text : String,
link : String,
}
]
}]
});
module.exports = mongoose.model('Model', model);
そして、ルーティングコードは、私は問題が可能性が高いと信じている:
//routes.js
const mongoose = require('mongoose');
const Model = require('./model.js');
...
app.post('/api/data/update', function(req, res) {
let theData = req.body.dataToInsert;
console.log(JSON.stringify(theData,null,4));
Model.findOneAndUpdate(
{issueId : theData.issueId},
{theData},
{upsert: true},
function(err,doc){
if(err) throw err;
console.log(doc);
});
});
同様に、データを格納するAngularコントローラの一部です。私はここに何か問題はないと思う。マングースよくある質問の最初の質問で
pushToServer = function() {
$http.post('/api/data/update',{
dataToInsert : $scope.dataObject,
}).then(function successCallback(res){
console.log("all good", JSON.stringify(res,null,3));
}, function errorCallback(res){
console.log("arg" + res);
});
}
Arg okay。これを現在のModel APIメソッドと統合することは可能ですか? –
これは大きな質問です。私は単一の更新で既存の '行'をすべて更新する方法を見つけていません。私はあなたが個々の行を個別に更新する必要があると思います。私はこれを行う方法で答えを更新します。 –
すごい、私はそれを試してみましょう。モンゴースがこれをサポートしていないことに失望する少し... –