我正在使用tomjs使用mongoose(指向mongolab),当我执行.findOne
并返回结果时,一个字段是一个JSON对象数组但是当我console.log
数组时我得到了
[ [object Object], [object Object], [object Object], [object Object], [object Object] ]
当我复制数组的确切内容并手动创建它并console.log
时,我会看到所有JSON。这听起来不像是一个问题,但是当我尝试拼接这个返回的数组时,我遇到了问题。
console.log(arr.splice(0, 1));
输出
[ [object Object], [object Object], [object Object], [object Object] ]
所以它返回剩下的所有对象而不是已删除的对象。当我在数组上进行拼接时,我通过精确复制导致问题的数组中的内容来创建它正常工作(返回的元素是我删除的元素)。
我尝试在for循环中浏览数组并记录每个元素,JSON看起来很好。我有一个解决方法,但不应该做更多这样的工作,因为它应该... ...
// outputs [ [object Object], [object Object]... ]
console.log(s);
for (var i = 0; i < s.length; i++) {
if (i == start) {
el = s[i];
break;
}
}
s.splice(start, 1);
s.splice(end, 0, el);
for (var i = 0; i < s.length; i++) {
// outputs the JSON for each element
console.log(s[i]);
}
我还尝试了w3schools上的array.splice示例,以确保拼接工作一般,并且工作正常。
var fruits = ["Banana", "Orange", "Apple", "Mango"];
console.log("Removed: " + fruits.splice(2,1,"Lemon"));
console.log(fruits);
// OUTPUTS
Removed: Apple
Banana,Orange,Lemon,Mango
答案 0 :(得分:3)
来自:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/splice
包含已删除元素的数组。如果只删除一个元素,则返回一个元素的数组
splice
更改原始数组。不要打印它返回的内容,打印调用后给出的数组。
arr.splice(0, 1);
console.log(arr);
答案 1 :(得分:1)
经过多次挫折之后,我才弄明白这个问题。事实证明,在我的架构中没有正确设置回来的对象数组。我需要定义一个将在数组中的对象,然后对于该模式中的属性具有类似的内容。
var SongSchema = new Schema({
title: String,
url: String,
source: String,
duration: String
});
var PlaylistSchema = new Schema({
userid: {
type: String,
index: { unique: true }
},
playlist_name: String,
songs: [SongSchema]
});
之后工作。
答案 2 :(得分:-1)
感谢user1123534 ...您的方法有效。 而不是将playlistSchema作为
var PlaylistSchema = new Schema({
userid: {
type: String,
index: { unique: true }
},
playlist_name: String,
songs: [
title: String,
url: String,
source: String,
duration: String
]
});
在
中为数组中的嵌入属性创建新架构var SongSchema = new Schema({
title: String,
url: String,
source: String,
duration: String
});
并将playlistSchema中的上述架构用作
var PlaylistSchema = new Schema({
userid: {
type: String,
index: { unique: true }
},
playlist_name: String,
songs: [SongSchema]
});