【发布时间】:2021-01-12 04:25:13
【问题描述】:
天啊,这个 API 项目真的很痛苦。我昨天让所有这些端点都工作了,但是当我开始尝试将数据添加到数据库中的集合(通过 Mongo shell)时,突然间我的请求被挂断了。这是我的服务器:
var express = require('express'),
app = express(),
port = process.env.PORT || 3000;
mongoose = require('mongoose'),
Character = require('./api/models/characterListModels'),
bodyParser = require('body-parser');
mongoose.Promise = global.Promise;
mongoose.connect({ useNewUrlParser: true }, 'mongodb://127.0.0.1:27017/streetfighterdb');
app.use(bodyParser.urlencoded({ extended: true}));
app.use(bodyParser.json());
var routes = require('./api/routes/characterListRoutes')
routes(app);
app.listen(port);
console.log('Street Fighter RESTful API server started on: ' + port);
这是我的控制器
'use strict';
var mongoose = require('mongoose'),
Character = mongoose.model('Characters')
exports.list_all_characters = function (req, res) {
Character.find({}, function (error, character) {
if (error) {
res.send(error);
} else {
res.json(character)
}
})
}
exports.create_a_character = function (req, res) {
var new_character = new Character(req.body);
new_character.save(function (error, character) {
if (error) {
res.send(error);
}
res.json(character);
});
}
exports.get_a_character = function (req, res) {
Character.findById(req.params.characterId, function (error, character) {
if (error) {
res.send(error);
}
res.json(character);
});
}
exports.update_a_character = function (req, res) {
Character.findByIdAndUpdate({
_id: req.params.characterId
}, req.body, {
new: true
}, function (error, character) {
if (error) {
res.send(error);
}
res.json(character);
});
}
exports.delete_a_character = function (req, res) {
Character.deleteOne({
_id: req.params.characterId
}, function (error, character) {
if (error) {
res.send(error);
}
if (!error) {
res.json('Character Successfully Deleted');
}
})
}
这是我的路由器
'use strict';
module.exports = function(app) {
var characterList = require('../controllers/characterListController');
app.route('/characters')
.get(characterList.list_all_characters)
.post(characterList.create_a_character);
app.route('/characters/:characterId')
.get(characterList.get_a_character)
.put(characterList.update_a_character)
.delete(characterList.delete_a_character);
};
这是我的模型
'use strict';
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var characterSchema = new Schema({
name: {
type: String,
required: true,
}
})
module.exports = mongoose.model('Characters', characterSchema);
现在我已经尝试了一些东西。
-
删除了特定的响应,只添加了一个通用的
res.send('success'),它就起作用了。 -
我还将
Character.find()方法中的{}替换为[],并且它起作用了(响应为空对象)。但由于某种原因,其他端点都没有返回响应。 -
添加了
console.log(res)和console.log(req)并在控制台中获取了日志。
这里发生了什么?救命!!
【问题讨论】:
标签: node.js mongodb api express mongoose