Dav*_*vid 0 javascript mongoose mongodb node.js angularjs
我正在使用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'
}]
});
Run Code Online (Sandbox Code Playgroud)
Angular:请注意,我已经在页面加载时检索了Lotion对象和Basket对象,现在我只是尝试将Lotion对象添加到basket的lotions数组中.
$scope.putTheLotionInTheBasket = function(lotion, basket){
basket.lotions.push(lotion);
basket.$update(function(data){
//success
},
//failure
function(error){
$scope.error = error.data.message;
}
)
}
Run Code Online (Sandbox Code Playgroud)
如您所见,这不起作用.它返回400Cast to ObjectId failed for value "[object Object]" at path "agencies", name:CastError,…}
有一个简单但正确的方法来做到这一点?我是否必须创建一个新的REST端点和$ resource函数并传递乳液ID以在服务器上进行查找,即使我已经在客户端有两个对象?
我对解决方案的简单性感到尴尬,但现在就是这样.由于Mongoose会在内部将一个有效的十六进制对象ID字符串转换为Mongoose.Schema.ObjectId,我可以简单地替换
basket.lotions.push(lotion);
Run Code Online (Sandbox Code Playgroud)
同
basket.lotions.push(lotion._id);
Run Code Online (Sandbox Code Playgroud)
而MEANJS和Mongoose为我做了其余的繁重工作.很简单......我只花了几天时间搞清楚:/
| 归档时间: |
|
| 查看次数: |
1471 次 |
| 最近记录: |