我是Mean stack的初學者我正在開發一個使用express從mongodb獲取所有記錄的API。但我無法從數據庫中獲取所有記錄。我不圖什麼,我做錯了,我這樣做如下:使用express和mongoskin驅動程序從mongoDB獲取所有記錄的API
這是我主要的應用程序(server.js)
require('rootpath')();
var express = require('express');
var app = express();
var session = require('express-session');
var bodyParser = require('body-parser');
var expressJwt = require('express-jwt');
var config = require('config.json');
app.set('view engine', 'ejs');
app.set('views', __dirname + '/views');
app.use(bodyParser.urlencoded({
extended: false
}));
app.use(bodyParser.json());
app.use(session({
secret: config.secret,
resave: false,
saveUninitialized: true
}));
// use JWT auth to secure the api
app.use('/api', expressJwt({
secret: config.secret
}).unless({
path: ['/api/users/authenticate', '/api/users/register']
}));
// routes
app.use('/', require('./controllers/login.controller'));
app.use('/register', require('./controllers/register.controller'));
app.use('/app', require('./controllers/app.controller'));
app.use('/api/users', require('./controllers/api/users.controller'));
/*// make '/app' default route
app.get('/', function (req, res) {
return res.redirect('/app');
});*/
// start server
var server = app.listen(3000, function() {
console.log('Server listening at http://' + server.address().address + ':' + server.address().port);
});
這是我的user.controller.js
用戶會作出請求給API http://localhost:3000/api/users/userList
var express = require('express');
var router = express.Router();
var userService = require('services/user.service');
router.get('/userList', getUserList);
module.exports = router;
function getUserList(req, res) {
userService.userList()
.then(function(users) {
if (users) {
res.send(users);
} else {
res.sendStatus(404);
}
})
.catch(function(err) {
res.status(400).send(err);
});
}
這是我的user.service.js
我正在查詢數據庫以使用mongoskin驅動程序獲取所有記錄。
var Q = require('q');
var mongo = require('mongoskin');
var db = mongo.db("mongodb://localhost:27017/EmployeeForm", {
native_parser: true
});
db.bind('users');
var service = {};
service.userList = userList;
module.exports = service;
function userList() {
var deferred = q.defer();
db.users.find(function(err, users) {
if (err) deferred.reject(err.name + ': ' + err.message);
});
return deferred.promise;
}
如果您轉到http:// localhost:3000/userList,會發生什麼情況?你沒有route api/userList/userList ... –
如果我去localhost:3000/userList它給出不能獲取/ userList,沒有問題的請求我不能寫特定的功能在快速取得所有記錄來自mongo db數據庫。 –
嗯..可以顯示主應用程序,在其中運行快速應用程序並啓用所有路線。 –