Node.js 400 错误请求

Node.js 400 Bad request

我在尝试 POST 到我的 mongo 数据库时遇到了 400 错误请求,不知道代码有什么问题。

这是 Mongoose 中的结构:

var exp = mongoose.model('Exp', {
    _creator: {
        type: mongoose.Schema.Types.ObjectId,
        required: true
    },

    exps: [{
        description: {
            type: String,
            required: true
        },
        skillId: {
            type: mongoose.Schema.Types.ObjectId,
            required: true
        }
    }]

});

这是我的测试用例结构,也是我希望存储数据的方式:

const exp = {
    _creator: UserOneId, // an ObjectID
    exps:[{
        description: "Ate an apple",
        skillId: SkillOneId // an ObjectID
    },{
        description: "Took a shower",
        skillId: SkillTwoId // an ObjectID
    }],

};

exps 部分应该是一个数组,以允许存储多个 exps,每个 exps 都有一个描述和一个技能 ID。

下面是我的 POST 函数:

app.post('/exps', authenticate, (req, res) => {

  var exp = new Exp({
    _creator: req.user._id, // got from suthenticate middleware
    exps: req.body.exps
  });
  exp.save().then(() => {
    res.send(exp);
  }, (e) => {
    res.status(400).send(e);
  });

})

和我的测试用例:

describe('POST /exps', () => {
    it('Should create new exp', (done) => {
        request(app)
            .post('/exps')
            .set('x-auth', users[0].tokens[0].token)
            .send(exps)
            .expect(200)
            .end(done);
    })
});

对于这样的结构,我只是无法弄清楚是什么问题导致我出现 400,此处未提及的中间件和变量已通过其他测试用例,因此我认为不是这些。

测试中的错误消息如下所示:

1) POST /exps Should create new exp:
 Error: expected 200 "OK", got 400 "Bad Request"
  at Test._assertStatus (node_modules/supertest/lib/test.js:250:12)
  at Test._assertFunction (node_modules/supertest/lib/test.js:265:11)
  at Test.assert (node_modules/supertest/lib/test.js:153:18)
  at Server.assert (node_modules/supertest/lib/test.js:131:12)
  at emitCloseNT (net.js:1552:8)
  at _combinedTickCallback (internal/process/next_tick.js:77:11)
  at process._tickCallback (internal/process/next_tick.js:104:9)

感谢任何帮助。

啊,找到了。这是 POST 函数中的错字。