#angularjs #node.js #mongodb #mongoose #ng-tags-input
#angularjs #node.js #mongodb #мангуст #ng-теги-ввод
Вопрос:
На данный момент я новичок в программировании, поэтому, пожалуйста, наберитесь терпения, если предоставленный материал недостаточно понятен, я сделаю все возможное.
Вот в чем проблема
{
email: 'asdf',
password: 'asdf',
userlists: {
list1: [ [Object], [Object], [Object] ]
}
}
Я хочу, чтобы терминал отправил мне обратно массив объектов в виде строк.
Я пытаюсь использовать эту схему,
user.js
var mongoose = require('mongoose');
module.exports = mongoose.model('User', {
email: String,
password: String,
userlists: {
list1: {type:{ sublist1: String }},
list2: {type:{ sublist2: String }}
}
});
Я попытался установить значение userlists
в массив объектов, это возвращает тот же нежелательный результат, а также пустые массивы list1 и list2, если они не заполнены.
Я хочу, чтобы пользователь использовал мой следующий $http.post
метод вместе с ng-model
, и я использую ngTagsInput
директиву, позволяющую пользователю выбирать готовые «теги» при регистрации.
signup-controller.js
$scope.createUser = function(){
console.log($scope.newUser);
$http.post('api/user/signup', $scope.newUser)
.success(function(response){
})
.error(function(error){
console.log(error);
})
};
signup.html
<button ng-click="createUser()">Submit</button>
<hr>
<div>
<tags-input ng-model="newUser.userlists.list1" display-property="sublist1">
<auto-complete source="tagsLoadedFromNgTagsInput($query)"
min-length="1"
load-on-focus="true"
load-on-empty="true">
</auto-complete>
</tags-input>
</div>
Вот результат, который я получаю от серверного терминала при выполнении.
Я хочу, чтобы объекты внутри массива отображались в виде строк, заданных вводом в signup.html выше.
{
email: 'asdf',
password: 'asdf',
userlists: {
list1: [ [Object], [Object], [Object] ]
}
}
Вот результат при входе db.users.find().pretty()
в оболочку mongo:
{
"_id" : ObjectId("57efd2dbdcb311107b4830b2"),
"email" : "asdf",
"password" : "asdf",
"userlists" : {
"list1" : [
{
"sublist1" : "sometag1",
"_id" : "57ed472b0c868aafab696b61"
},
{
"sublist1" : "sometag2",
"_id" : "57ed472b0c868aafab696b62"
},
{
"sublist1" : "sometag3",
"_id" : "57ed472b0c868aafab696b63"
}
]
},
"__v" : 0
}
Кто-нибудь знает, что я здесь делаю не так?
Ответ №1:
console.log
Функция обертывает объекты перед их отображением. Для обеспечения отображения всех данных вы должны преобразовать их в строку, используя JSON.stringify
перед вызовом консоли.
// Your object
var obj = {some: {nested: {object: {definition: 'hello world!'}}}};
// Print as a single line
console.log(JSON.stringify(obj));
// Print with 2 spaces identation
console.log(JSON.stringify(obj, null, 2));
Комментарии:
1. Большое спасибо! Работает как шарм и имеет полный смысл 🙂
Ответ №2:
Используйте ng-repeat, поскольку list1 является массивом .
<tags-input ng-repeat="list in newUser.userlists.list1">
<div>{{list.sublist1}}</div>
</tags-input>
Комментарии:
1. Я не уверен, что понимаю ответ, но у меня нет проблем с загрузкой моих тегов во внешнем интерфейсе, у меня проблемы с получением правильного вывода в серверной консоли. Спасибо за ответ, я ценю это!
2. использование
console.log(Object.userlists.list1)