2014-07-19 78 views
0

我使用SailsJs(這是基於Express)發送帶有數組的JSON對象。出於某種原因,當我在瀏覽器中加載API時,數組不會被髮送。SailsJs/Express刪除嵌套數組``res.send()`

代碼發送對象是在這裏:

exports.RESTifySend = function(res, objects) { 
    return RESTService.RESTify(objects).then(function(RESTedObjects) { 
     console.log("SENDING: ", RESTedObjects); 
     return res.json(RESTedObjects, 200); // I've also tried res.send() 
    }, function() { 
     res.send(500); 
    }); 
}; 

logging語句SENDING: ...輸出:

SENDING: { 
    id: 'IKIlrgXhp6', 
    messages: [{ 
     user: null, 
     text: 'trest', 
     sentAt: undefined 
    }] 
} 

RESTifyService只是一個小框架,我建刪除對象屬性不應該暴露在API(密碼,電子郵件等)中。

+0

你能告訴你如何在你的控制器代碼中實際使用'RESTifySend'嗎?問題可能在您的調用中。 – sgress454

回答

1

在我構建的框架中的某處,我用lodash.clone([object])替換了toObject();,這解決了所有問題。對於遇到類似問題的其他人,我建議您在toJSON方法中嘗試相同的操作。水線對象的toObject();方法在填寫或編輯與關聯名稱匹配的屬性時顯然具有一些奇怪的副作用。

0

當序列化具有集合屬性的模型時(如具有多個Comments的東西),也遇到此問題。

在我來說,我打電話.toJSON記錄對象序列化,在收集,其中有像模特的定義:

attributes: { 
    ... 
    toJSON: function() { 
    var self = this.toObject() 
    // could pick a subset of attrs here 
    return _.pick(self, _.keys(self)) 
    } 
} 

這讓我自由地再填充comments屬性,並沒有關於驚喜線上的數據。