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 函数中的错字。
我在尝试 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 函数中的错字。