我正在尝试将包含第一级数据和数组的 JSON 对象写入 MongoDB。
相反,发生的情况是所有第一级数据都被存储,但数组中包含的任何内容都没有存储。当记录服务器接收到的数据时,我看到了整个对象,这让我相信我的 Mongoose 代码有问题。
例如,如果我发送这样的内容:
issueId: "test1",
issueTitle: "testtest",
rows: [
{order:1,data: [object]},
{order:2,data: [object]},
]
仅存储以下内容:
issueId: "test1",
issueTitle: "testtest",
lastUpdated: Date,
我有以下 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);
});
}