我使用MeanJS,用戶輸入每個需要創建新文檔的對象列表。同時我需要創建另一個單獨的文檔,指向數組中的每個對象,並將每個對象鏈接回這個新文檔。所以最終的結果需要是模型'Q'的任意數量的文檔,它們與模型'S'的另一個文檔相關聯。使用節點和貓鼬將新mongoDB文檔從數組中取出的最佳方式是什麼?
我試圖做到這一點的原因是讓用戶創建一個問題的調查。每個問題都將是它自己的填充調查的對象(作爲一個屬性,它將包含這些問題ID的列表)。
S = {"_id": 0, "Qids": [ObjectId("1"), ObjectId("2"), ObjectId("3"), ObjectId("4")]}
Q1 = {"_id": ObjectId("1"), "Sid": ObjectId("0")}
Q2 = {"_id": ObjectId("2"), "Sid": ObjectId("0")}
Q3 = {"_id": ObjectId("3"), "Sid": ObjectId("0")}
Q4 = {"_id": ObjectId("4"), "Sid": ObjectId("0")}
我的問題:我似乎無法做到這一點,而不會在某種問題回調。有人能給我一些建議嗎?這是它看起來像現在:
客戶端:
$scope.Qlist = [Q1, Q2, Q3, Q4];
$scope.S = {};
$http.post('/S', $scope.S).success(function(data){
var req_obj = {
Sid: data._id,
Q: {}
};
for (var i = 0; i<$scope.Qlist.length; i++) {
req_obj.Q = $scope.Qlist[i];
$http.post('/Q', req_obj);
};
});
服務器端:
app.route('/Q')
.post(users.requiresLogin, questions.hasAuthorization, questions.fillSurvey);
然後,我有處理這些功能的服務器端控制器。 questions.fillsurvey函數將問題添加到MongoDB,然後獲取每個問題的ID並將它們推送到Qids下的S文檔中。大部分工作正常,但當客戶端發送Q1,Q2,Q3和Q4時,服務器僅接收4次Q4。
理想情況下,我想發送$scope.Qlist
和$scope.S
在一個發佈請求中,並讓服務器端數據全部出來,但我一直被捕獲的回調函數,這就是爲什麼我選擇了在客戶端循環通過$scope.Qlist
的帖子。如果有人有「最佳實踐」解決方案,我非常感謝幫助!
謝謝!這工作! – AStack41