Mih*_*šič 0 javascript node.js express
我正在使用express和mongoose创建一个基本API.现在我想要2 GET URLS - 一个用于获取数据库中的所有条目,另一个用于获取随机条目.现在首先定义的路由 - '/API/getWords'
工作正常,但是当我浏览器浏览到第二个路径时 - 'API/getRandomWord'
我收到以下错误:
不能GET/API/getRandomWord
现在我无法弄清楚我做错了什么.我是否只能定义一个app.get,现在需要定义定义不同功能的参数?或者这是"正确"的方式吗?
谢谢您的帮助.
我的api.js:
var express = require('express');
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var Words = require('./models/words.js');
//initialize our express app
var app = express();
//use body parser with JSON
app.use(bodyParser.json());
//middleware for CORS requests
app.use(function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET, PUT, POST, DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
next();
});
//addWords endpoint
app.post('/API/addWords', function(req, res) {
//get user from request body
var words = req.body;
var newWords = new Words({
quote: words.quote,
source: words.source,
author: words.author
});
newWords.save(function(err) {
if (err) {
if (err.code == 11000) {
res.status(400).send({
message: 'This quote already exists!'
});
} else {
res.status(500).send({
message: err.errmsg
});
}
} else {
console.log('quote saved!');
//if all goes well, send 200 + validation message
res.status(200).send({
message: 'Successfully quoted!'
});
}
});
});
//get all the words
app.get('/API/getWords', function(req, res) {
Words.find({}, function(err, words) {
if (err) {
res.status(500).send({
message: err.errmsg
});
} else {
res.status(200).send(words);
}
});
});
//get a random word
app.get('API/getRandomWord', function(req, res) {
//count ann the entries
Words.count().exec(function(err, count) {
//get a random number that is less or equal number of entries
var random = Math.floor(Math.random() * count);
//skip the random number, then return 1 entry
Words.findOne().skip(random).exec(
function(err, words) {
if (err) {
res.status(500).send({
message: err.errmsg
});
} else {
res.status(200).send(words);
}
});
});
});
//connect to mongoDB
mongoose.connect('');
//define our server
var server = app.listen(3000, function() {
console.log('api listening on ', server.address().port);
});
Run Code Online (Sandbox Code Playgroud)
我的模型(words.js):
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
// create a schema
var wordsSchema = new Schema({
author: {
type: String,
default: 'unknown',
index: true
},
source: {
type: String,
default: 'unknown',
index: true
},
quote: {
type: String,
unique: true,
required: true
},
created: Date,
updated: Date
});
//create the date
wordsSchema.pre('save', function(next) {
//get current date
var currentDate = new Date();
//assign date
this.updated = currentDate;
if (!this.created) {
this.created = currentDate;
}
next();
});
var Words = mongoose.model('Words', wordsSchema);
// make this available to our users in our Node applications
module.exports = Words;
Run Code Online (Sandbox Code Playgroud)
您的路线/API/getRandomWord
缺少领先/
,因此需要:
app.get('/API/getRandomWord', function(req, res) {
Run Code Online (Sandbox Code Playgroud)
代替:
app.get('API/getRandomWord', function(req, res) {
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4059 次 |
最近记录: |