作为sith express和MongoDB的入门项目,我正在创建一个简单的API,它将返回一个笑话,为此,我正在创建一种方法,让用户发送一个POST请求,在请求体中包含笑话类型和笑话,这将把笑话添加到我的集群中。
我正在使用以下架构:
const mongoose = require('mongoose');
const schema = mongoose.Schema;
const jokecreateWay = new schema({
JokeType: {
type: String,
//required: true
},
joke: {
type: String,
//required: true,
},
})
module.exports = mongoose.model('joke', jokecreateWay)
使用以下请求后代码:
app.post('/add-joke', (req, res) => {
const joke = req.body;
const gType = req.body;
const strigifiedJoke = JSON.stringify(joke);
const strigifiedGType = JSON.stringify(gType);
if (joke != null || gType != null) {
try {
const toBeInserted = JokeSchema.create({
JokeType: strigifiedGType,
joke: strigifiedJoke,
});
JokeSchema.save;
return res.status(201).send({ message: 'joke added' });
}
catch (err) {
return res.status(400).send({ message: err });
}
}
else {
res.status(418).send({ message: "You forgot to either specify the joke or its type." })
return
}
})
使用失眠发送post请求时,我在控制台中收到以下错误
D:\api\jokesAPIV2\node_modules\mongoose\lib\drivers\node-mongodb-native\collection.js:158
const err = new MongooseError(message);
^
MongooseError: Operation `jokes.insertOne()` buffering timed out after 10000ms
at Timeout.<anonymous> (D:\api\jokesAPIV2\node_modules\mongoose\lib\drivers\node-MongoDB-native\collection.js:158:23)
at listOnTimeout (node:internal/timers:559:17)
at processTimers (node:internal/timers:502:7)
型
有人知道为什么会这样吗?我该怎么解决?
我几乎尝试了this答案中建议的所有方法。
2条答案
按热度按时间yshpjwxd1#
create
返回一个Promise
。另外,请确保正确地对req.body
进行反结构:5lhxktic2#
你不需要
JokeSchema.save;
部分,因为.create()
方法会做所有的事情。但是,你必须在.create()
方法之前添加await,并指定函数为async。