2

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

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。

我究竟做错了什么?

4

1 回答 1

1

我是 Restangular 的创造者。

我不知道 100% Mongose 如何与 Express 或您公开的 API 一起工作,但想法是您应该在您的 mongo 文档中拥有一些嵌套的 Restful 资源以及这种“嵌套”。

所以,你应该有一些 Rest API 给 /departments/123 的请求返回部门 123,给定的 /departments/123/employees/456 返回部门 123 的员工 456。如果你有一个 Rest API,然后,您将使用 Restangular 获得正确的响应:D

希望这对你有用!

于 2013-06-19T06:23:43.140 回答