如何使用Restangular访问嵌套文档

时间:2013-06-16 14:21:54

标签: angularjs mongoose restangular

我第一次开始使用restangular并努力访问嵌套文档。如果我有像这样的Mongoose模式:

var mongoose = require('mongoose');

module.exports = function Schemas() {
    this.schema = mongoose.Schema;

this.EmployeeSchema = new this.schema({
    'firstname': {
        type: String,
        required: true,
        trim: true
    },
    'lastname': {
        type: String,
        required: true,
        trim: true
    },
    'email': {
        type: String,
        required: true,
        trim: true,
        index: true,
        validate: /\b[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}\b/
    },
    'departmentId': {
        type: this.schema.ObjectId,
        trim: true,
        required: true
    },
    'enddate': {
        type: String,
        trim: true
    },
    'active': {
        type: Boolean,
        "default": true
    }
});
this.EmployeeSchemaModel = mongoose.model('employees', this.EmployeeSchema);

this.DepartmentSchema = new this.schema({
    'name': {
        type: String,
        required: true,
        trim: true,
        index: {
            unique: true
        }
    },
    'employees': [this.EmployeeSchema]
});
    this.DepartmentSchemaModel = mongoose.model('departments', this.DepartmentSchema);
    mongoose.connect('mongodb://localhost:8120/staff');
};

要访问部门内的员工,我想我可以简单地执行以下操作:

        var getEmployeeById = function(departmentId, empId) {

             Restangular.one('departments',departmentId).one('employees', empId).get().then(function (emp){
            return emp;
        });

虽然我可以检索一个部门,但是当我这样做时,它有一个嵌套的员工数组,正确地填充了我期望的员工。我无法按照我的意图通过其ID来检索个别员工。我最终得到了404。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

我是Restangular的创造者。

我不知道100%Mongose如何使用Express或者你暴露API的方式,但我们的想法是你应该有一些嵌套的Restful Resources以及你的mongo文档中的“嵌套”。

因此,您应该有一些Rest API给出/ departments / 123请求返回部门123,并且给定/ departments / 123 / employees / 456返回部门123的员工456.如果您有Rest API那么,你将得到Restangular:D

的反应

希望这适合你!