簡體   English   中英

MeanJS:在Angular數組中設置Mongoose對象引用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM