使用 ng-model 定义对象的 mongoose 模式数组
Defining a mongoose schema array of objects with ng-model
我现在是一个菜鸟,所以如果提供的material不够清楚,请耐心等待,我会尽力的。
问题来了
{
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
设置为一个对象数组,这个 returns 同样不需要的结果,以及 list1[=51 的空数组=]和list2如果没有填写。
我希望用户将我的以下 $http.post
方法与 ng-model
一起使用,并且我正在使用 ngTagsInput
指令让用户 select 预制 "tags"报名时
报名-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] ]
}
}
这是在 mongo shell 中记录 db.users.find().pretty()
时的结果:
{
"_id" : ObjectId("57efd2dbdcb311107b4830b2"),
"email" : "asdf",
"password" : "asdf",
"userlists" : {
"list1" : [
{
"sublist1" : "sometag1",
"_id" : "57ed472b0c868aafab696b61"
},
{
"sublist1" : "sometag2",
"_id" : "57ed472b0c868aafab696b62"
},
{
"sublist1" : "sometag3",
"_id" : "57ed472b0c868aafab696b63"
}
]
},
"__v" : 0
}
有人知道我做错了什么吗?
使用 ng-repeat 因为 list1 是一个数组。
<tags-input ng-repeat="list in newUser.userlists.list1">
<div>{{list.sublist1}}</div>
</tags-input>
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));
我现在是一个菜鸟,所以如果提供的material不够清楚,请耐心等待,我会尽力的。
问题来了
{
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
设置为一个对象数组,这个 returns 同样不需要的结果,以及 list1[=51 的空数组=]和list2如果没有填写。
我希望用户将我的以下 $http.post
方法与 ng-model
一起使用,并且我正在使用 ngTagsInput
指令让用户 select 预制 "tags"报名时
报名-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] ]
}
}
这是在 mongo shell 中记录 db.users.find().pretty()
时的结果:
{
"_id" : ObjectId("57efd2dbdcb311107b4830b2"),
"email" : "asdf",
"password" : "asdf",
"userlists" : {
"list1" : [
{
"sublist1" : "sometag1",
"_id" : "57ed472b0c868aafab696b61"
},
{
"sublist1" : "sometag2",
"_id" : "57ed472b0c868aafab696b62"
},
{
"sublist1" : "sometag3",
"_id" : "57ed472b0c868aafab696b63"
}
]
},
"__v" : 0
}
有人知道我做错了什么吗?
使用 ng-repeat 因为 list1 是一个数组。
<tags-input ng-repeat="list in newUser.userlists.list1">
<div>{{list.sublist1}}</div>
</tags-input>
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));