我應該如何構建我的快速/貓鼬應用程序,以便可以使用我的模式,模型,路線以及在這些路線被擊中時調用的函數?Express/Mongoose應用程序的結構
server.js
// setup
var express = require("express");
var app = express();
var mongoose = require("mongoose");
app.db = mongoose.connect('mydb'));
// this is the bit I am not sure about
var UserSchema = require('./modules/users/schema')(app, mongoose);
var routes = require('./modules/users/routes')(app, mongoose, UserSchema);
// listen
app.listen(3000);
模塊/用戶/ schema.js
exports = module.exports = function(app, mongoose)
{
var UserSchema = mongoose.Schema(
{
username: { type: String, required: true },
password: { type: String }
});
var UserModel = mongoose.model('User', UserSchema, 'users');
// it looks like this function cannot be accessed
exports.userlist = function(db)
{
return function(req, res)
{
UserModel.find().limit(20).exec(function(err, users)
{
if(err) return console.error(err);
res.send(users);
});
};
};
}
模塊/用戶/ routes.js
function setup(app, mongoose, UserSchema)
{
var db = mongoose.connection;
// get all users
app.get('/api/v1/users', UserSchema.userlist(db)); // this function cannot be accessed
// get one user
app.get('/api/v1/users/:id', UserSchema.userone(db));
// add one new user
app.post('/api/v1/users', UserSchema.addone(db));
}
// exports
module.exports = setup;
PS:我得到的錯誤是app.get('/api/v1/users', UserSchema.userlist(db)); TypeError: Cannot call method 'userlist' of undefined
(routes.js)。