gpt4 book ai didi

javascript - 平均JS : setting Mongoose object reference in array in Angular

转载 作者:太空宇宙 更新时间:2023-11-04 02:53:33 24 4
gpt4 key购买 nike

我正在使用 MeanJS,但遇到了障碍。如果可能的话,我想使用 MeanJS 提供的 Angular 中 $resource 服务的 $update 函数。这是我正在尝试做的事情的一个非常简化的版本:

Mongoose 架构:

var mongoose = require('mongoose'),
Schema = mongoose.Schema;

var Lotion = new Schema({
name: String;
});
var BasketSchema = new Schema({
lotions: [{
type: Schema.ObjectId,
ref: 'Lotion'
}]
});

Angular:请注意,我已经在页面加载时检索了 Lotion 对象和 Basket 对象,现在我只是尝试将 Lotion 对象添加到篮子的乳液数组中。

$scope.putTheLotionInTheBasket = function(lotion, basket){
basket.lotions.push(lotion);
basket.$update(function(data){
//success
},
//failure
function(error){
$scope.error = error.data.message;
}
)
}

如您所见,这是行不通的。它返回 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 为我完成剩下的繁重工作。简单......我只花了几天时间就搞清楚了:/

关于javascript - 平均JS : setting Mongoose object reference in array in Angular,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26564864/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com