我仍然掌握Express/Angular以及它們如何一起發佈到服務器。我在示例應用程序中使用了MEAN堆棧。將值保存到Express/Angular/Node中的對象數組中
我試圖發佈的對象的架構在Express中看起來像這樣。
首先定義「版本」架構:
var VersionSchema = new Schema({
title: {
type: String,
default: '',
trim: true
},
content: {
type: String,
default: '',
trim: true
},
submitted: {
type: Date,
default: Date.now
},
user: {
type: Schema.ObjectId,
ref: 'User'
}
});
版本模式在我的草稿架構使用。當用戶創建草稿時,它將成爲版本數組中的版本項目。草稿更新後,它會創建一個新的數組項目,以保存草稿的所有版本。
var DraftSchema = new Schema({
versions: [VersionSchema],
});
草案架構被設置爲一個Angular服務並注入到我的控制器中。該服務是用於創建$資源的樣板代碼,但不應該是必需的。
我有兩個控制器來創建Draft對象並保存到Mongo:一個是Angular,一個是Express。
角控制器:
$scope.create = function() {
var version = {
title: this.title,
content: this.content
};
var draft = new Drafts({
versions: [version]
});
draft.$save(function(response) {
$location.path("drafts/" + response._id);
});
};
在角控制器我傳遞的標題和內容被保存到草案。據我瞭解,你不應該使用Angular控制器將用戶信息傳遞給服務器。所以這在下面的控制器中由Express處理。
快遞控制器:
exports.create = function(req, res) {
var draft = new Draft(req.body);
draft.versions = [req.user]; // Here is where my problem is, trying to save user
draft.save(function(err) {
if (err) {
return res.send('users/signup', {
errors: err.errors,
draft: draft
});
} else {
res.jsonp(draft);
}
});
};
您可以在上面哪裏我的問題是我的評論看。我查看了文檔,SO問題等等,以便將我的User屬性設置爲在此處創建的Versions數組項目的正確方法。
需要注意的是,如果我移動用戶從版本架構的架構草案和使用:
draft.user = req.user;
要保存用戶,然後它工作得很好。但我希望將用戶保存到VersionSchema中。
爲了解決Erick的下面的評論,這是我希望我的草稿模型看起來像JSON表示。版本是一個數組,因爲我希望每次草稿更新時都創建一個新的數組項目。
[{
_id: 4h55542j232555000441,
versions: [
{
title: 「A really great title」,
body: 「On that day the people….」,
user: 5234523452349589hh23523,
submitted: Date
}
]
}];
我不熟悉的意思,但它仍然不是很清楚,我,你要完成你的蒙戈什麼。你可以添加一個JSON例子來說明Mongo過程結束時你期望得到什麼嗎? –
'req.user'中有什麼? 'draft.versions'不包含'Version'數組,它具有'user'屬性(然後它只是一個'ObjectId')? – WiredPrairie
@WiredPrairie req.user包含我的用戶對象,其中包含名稱,用戶名,ID等。我的問題是,我找不到正確的語法將我的用戶推送到由Express控制器創建的數組項目上。 – keepitreal