与nodejs,mongoose和JSON对象数组进行连接
我正在使用mongob(指向mongolab)与nodejs,当我做.findOne
并得到一个结果回来,一个字段是一个JSON对象的数组,但是当我console.log
我得到的数组
[ [object Object], [object Object], [object Object], [object Object], [object Object] ]
当我复制数组的确切内容,并手动创build它和console.log
它,我看到所有的JSON。 这听起来不像是一个问题,但是当我尝试拼接这个数组返回时,我遇到了问题。
console.log(arr.splice(0, 1));
输出
[ [object Object], [object Object], [object Object], [object Object] ]
所以它将返回所有剩下的对象而不是被删除的对象。 当我在数组上进行拼接时,通过精确地复制数组中引起问题的东西,它可以正常工作(返回的元素是我删除的元素)。
我试着通过在for循环中的数组,并logging每个元素和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
来自: https : //developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/splice
返回
包含已删除元素的数组。 如果只有一个元素被删除,则返回一个元素的数组
splice
改变了原始数组。 不要打印它返回的内容,在打电话给它后打印出你给的数组。
arr.splice(0, 1); console.log(arr);
经过多次挫折之后,我才弄清楚了这个问题。 事实certificate,返回的对象数组在我的模式中没有正确设置。 我需要定义一个将在数组中的对象,然后在模式中的属性有这样的东西。
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] });
之后工作。
感谢user1123534 …你的方法已经工作。 而不是把playlistSchema当成
var PlaylistSchema = new Schema({ userid: { type: String, index: { unique: true } }, playlist_name: String, songs: [ title: String, url: String, source: String, duration: String ] });
为数组中embedded的属性创build一个新的模式
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] });