Я пытаюсь написать объект JSON, который содержит данные первого уровня вместе с массивами в MongoDB.Mongoose не создает субдокумент из массива JSON
Что происходит, но все данные первого уровня хранятся, но все, что содержится в массиве, не является. При регистрации данных, которые получает сервер, я вижу весь объект, что заставляет меня думать, что что-то не так с моим кодом Mongoose.
Так, например, если я отправить что-то вроде этого:
issueId: "test1",
issueTitle: "testtest",
rows: [
{order:1,data: [object]},
{order:2,data: [object]},
]
Только следующие получает хранится:
issueId: "test1",
issueTitle: "testtest",
lastUpdated: Date,
У меня есть следующая модель для Монго:
//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);
});
});
Кроме того, вот часть углового контроллера, хранящего данные. Я не думаю, что здесь есть какие-то проблемы.
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? –
Это отличный вопрос. Я не нашел способ обновить все существующие «строки» за одно обновление. Я думаю, вам нужно будет обновлять каждую строку по отдельности. Я обновлю ответ, чтобы сделать это. –
Удивительно, я попробую это. Немного разочаровывает, что Mongoose не поддерживает это ... –