【发布时间】:2021-03-12 01:43:26
【问题描述】:
我在 NodeJs 中创建了一个非常简单的 API。代码如下:
const Post = require('../models/article');
...
router.post('/contribute', (req, res) => {
console.log('Pushing new article');
let userPost = req.body;
let post = new Post(userPost);
post.save((error, registeredPost) => {
if (error) {
console.log(error);
} else {
res.status(200).send(registeredPost);
}
})
})
...
module.exports = router;
帖子的结构是这样的:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const articleSchema = new Schema({
articleid: String,
title: String,
content: String,
date: String,
contributor: String,
upvotes: Number,
upvoters: [String],
downvotes: Number,
downvoters: [String]
})
module.exports = mongoose.model('article', articleSchema, 'articles');
这里是 server.js
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const api = require('./routes/api');
const cors = require('cors');
app.use(bodyParser.json());
app.use(cors());
app.use('/api', api);
app.get('/', function(req, res) {
res.send('Server is up and running!');
})
app.listen((3000), function() {
console.log('Server listening on heroku environment port');
});
理想情况下,数据应该来自有角度的表单/模板,但在推送代码之前,我想在 Postman 上进行测试。这是截图:
我明白了:
无法发布/贡献
请指出我的错误。
【问题讨论】:
-
你在 index.js 中添加了
app.use(express.json({ extended: true }));吗? -
您是否已将路由器导出到路由文件
module.exports = router;中? -
@TalESid,是的,我做到了。
-
只有在找不到 POST 路由
/contribute时才会发生这种情况! -
那你为什么用
router.post?如果没有单独的路由文件,在 index.js 中使用app.post
标签: node.js angular express npm postman