我不熟悉使用Express和Mongoos編寫API,但我認爲應該起作用的東西正在導致我一些悲傷。使用Mongoos無法使用Express版本
我試圖讓事情變得模塊化,因爲我可以,所以我有我的主要app.js,一個model.js然後我routes.js
這裏是我的app.js:
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var cors = require('cors');
mongoose.connect('mongodb://localhost/guestbook');
var app = express();
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cookieParser());
app.use(cors());
app.use('/api', require('./routes/api'));
// changes it to use the optimized version for production
app.use(express.static(path.join(__dirname, '/dist')));
// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});
module.exports = app;
以下是我在我的/ API(routes文件)
//DEPENDENCIES
var express = require('express');
var router = express.Router();
//GUESTBOOK END POINTS
var Guestbook = require('../models/guestbook')
router.route('/guestbook')
.post(function(req, res){
var guestbook = new Guestbook();
guestbook.firstname = req.body.firstname;
guestbook.lastname = req.body.lastname;
guestbook.email = req.body.email;
guestbook.postedon = req.body.postedon;
guestbook.comment = req.body.comment;
guestbook.rate = req.body.rate;
guestbook.save(function(err){
if(err)
res.send(err);
res.json({message:'Post created!'})
});
})
.get(function(req, res){
guestbook.find(function(err, guestbook){
if(err)
res.send(err);
res.json(guestbook);
});
});
//RETURN ROUTER AS MODULE
module.exports = router;
最後,這裏是我的模型:
//DEPENDENCIES
var restful = require('node-restful');
var mongoose = restful.mongoose;
var guestbookSchema = new mongoose.Schema({
firstname: String,
lastname: String,
email: String,
postedon: Date,
comment: String,
rate: Number
});
//RETURN MODEL
module.exports = mongoose.model('guestbook', guestbookSchema);
再一次,這篇文章的作品,但得不到。
這裏是的console.log我回來了get:
Error: No default engine was specified and no extension was provided.
at new View (/Users/christophernakea/Documents/Projects/TestAPIExpress/server/node_modules/express/lib/view.js:62:11)
at EventEmitter.render (/Users/christophernakea/Documents/Projects/TestAPIExpress/server/node_modules/express/lib/application.js:569:12)
at ServerResponse.render (/Users/christophernakea/Documents/Projects/TestAPIExpress/server/node_modules/express/lib/response.js:961:7)
at /Users/christophernakea/Documents/Projects/TestAPIExpress/server/app.js:32:13
at Layer.handle_error (/Users/christophernakea/Documents/Projects/TestAPIExpress/server/node_modules/express/lib/router/layer.js:71:5)
at trim_prefix (/Users/christophernakea/Documents/Projects/TestAPIExpress/server/node_modules/express/lib/router/index.js:310:13)
at /Users/christophernakea/Documents/Projects/TestAPIExpress/server/node_modules/express/lib/router/index.js:280:7
at Function.process_params (/Users/christophernakea/Documents/Projects/TestAPIExpress/server/node_modules/express/lib/router/index.js:330:12)
at next (/Users/christophernakea/Documents/Projects/TestAPIExpress/server/node_modules/express/lib/router/index.js:271:10)
at Layer.handle_error (/Users/christophernakea/Documents/Projects/TestAPIExpress/server/node_modules/express/lib/router/layer.js:67:12)
at trim_prefix (/Users/christophernakea/Documents/Projects/TestAPIExpress/server/node_modules/express/lib/router/index.js:310:13)
at /Users/christophernakea/Documents/Projects/TestAPIExpress/server/node_modules/express/lib/router/index.js:280:7
at Function.process_params (/Users/christophernakea/Documents/Projects/TestAPIExpress/server/node_modules/express/lib/router/index.js:330:12)
at Immediate.next (/Users/christophernakea/Documents/Projects/TestAPIExpress/server/node_modules/express/lib/router/index.js:271:10)
at Immediate.<anonymous> (/Users/christophernakea/Documents/Projects/TestAPIExpress/server/node_modules/express/lib/router/index.js:618:15)
at Immediate.immediate._onImmediate (timers.js:435:18)
我試着更換這行:if(err)res.send(err);與res.json('錯誤':err.message)並得到相同的錯誤... – cnak2
@ cnak2 res.send()不呈現模板。因此,更換該行不會有任何影響。 – yeiniel
@hatim,所以你在哪裏建議我替換代碼會生成以下錯誤:res.json('error':err.message); ^^^^^^^ SyntaxError:missing)在參數列表後 – cnak2