[英]MeanJS: setting Mongoose object reference in array in Angular
我正在使用MeanJS並遇到障礙。 如果可能的話,我想使用MeanJS提供的Angular中$ resource服務的$ update函數。 這是我正在嘗試做的一個非常簡化的版本:
貓鼬模式:
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var Lotion = new Schema({
name: String;
});
var BasketSchema = new Schema({
lotions: [{
type: Schema.ObjectId,
ref: 'Lotion'
}]
});
角度:請注意,我已經在頁面加載時檢索了Lotion對象和Basket對象,現在只是嘗試將Lotion對象添加到basket的乳液數組中。
$scope.putTheLotionInTheBasket = function(lotion, basket){
basket.lotions.push(lotion);
basket.$update(function(data){
//success
},
//failure
function(error){
$scope.error = error.data.message;
}
)
}
如您所見,這是行不通的。 它Cast to ObjectId failed for value "[object Object]" at path "agencies", name:CastError,…}
返回Cast to ObjectId failed for value "[object Object]" at path "agencies", name:CastError,…}
的400 Cast to ObjectId failed for value "[object Object]" at path "agencies", name:CastError,…}
有沒有簡單但正確的方法來做到這一點? 即使我已經在客戶端同時擁有兩個對象,我是否也必須創建一個新的REST端點和$ resource函數並傳遞洗劑ID在服務器上進行查找?
我為解決方案的簡單性感到尷尬,但事實就是如此。 由於Mongoose會在內部將有效的十六進制對象ID字符串轉換為Mongoose.Schema.ObjectId,因此我可以簡單地替換
basket.lotions.push(lotion);
與
basket.lotions.push(lotion._id);
MEANJS和Mongoose為我完成了其余的繁重工作。 很簡單...只花了我幾天時間就解決了:/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.