У меня есть схема статьи и схема тегов. И я пытаюсь сохранить массив ссылок объектов объекта Tag на статью. Это моя статья схема:Хранить ссылку на объект в Mongoose и Mean JS
var ArticleSchema = new Schema({
....
title: {
type: String,
.....
},
content: {
.....
},
.....
tags: [{
type: Schema.Types.ObjectId,
ref: 'Tag'
}]
});
И схема Тэг:
var TagSchema = new Schema({
name: {
.....
},
user: {
......
},
count: {
.....
}
});
В передней части у меня есть контроллер.
'use strict';
// Articles controller
angular.module('articles').controller('ArticlesController', [
'$scope', '$stateParams', '$location', 'Authentication', 'Articles', 'Tags', '$filter',
function($scope, $stateParams, $location, Authentication, Articles, Tags, $filter) {
$scope.authentication = Authentication;
// Create new Article
$scope.create = function(isValid) {
$scope.error = null;
if (!isValid) {
$scope.$broadcast('show-errors-check-validity', 'articleForm');
return false;
}
var tagsArrays = this.tags.replace(/ /g, '').split(',');
var tagsObjectArray = [];
for (var i = 0; i < tagsArrays.length; i++) {
// Create tag object
var tag = new Tags({
name: tagsArrays[i]
});
tagsObjectArray.push(tag);
saveATag(tag);
//article.tags.push(tag);
}
function saveATag(tempTag) {
tempTag.$save(function(response) {
}, function(errorResponse) {
$scope.error = errorResponse.data.message;
});
}
// Create new Article object
var article = new Articles.articles({
title: this.title,
content: this.content,
tags: tagsObjectArray
});
// Redirect after save
article.$save(function(response) {
$location.path('articles/' + response._id);
}, function(errorResponse) {
$scope.error = errorResponse.data.message;
});
};
В задней части у меня есть контроллер для статьи:
exports.create = function(req, res) {
var article = new Article(req.body);
article.user = req.user;
article.save(function(err) {
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.json(article);
}
});
};
Когда я пытаюсь сохранить массив тегов в статье я получаю ошибку: Cast к массиву Сбой value "[object Object]" at path "tags" Я осмотрел и попробовал несколько способов, но до сих пор не могу его хранить в базе данных. Все маршруты для переднего и заднего конца установлены правильно.
Я сохраняю теги в базе данных. Теги сохраняются успешно, я вижу, что они сохранены. – user2512806
Здесь я определяю новый тег, а затем сохраняю его: 'var tag = new Tags ({ name: tagsArrays [i]' }); – user2512806
Да, вы сохраняете теги, но вы пытаетесь сохранить tagObjectArray как теги в статье, когда теги в модели Article представляют собой массив идентификаторов объектов, а не массив объектов тега, что вызывает новую статью (req. тело), чтобы выбросить ошибку на серверном контроллере –