2016-03-01 47 views
0

努力让我的头围绕这一周半,我想知道如何获得上传.json端点是从Sequelize ORM的查询。目前,它记录一个404错误 “GET/API /用户404和3ms的”。正如你可能已经听说Sequelize的文档是非常有限的,我一直在寻找的github回购后的教程,并没有迄今的工作,所以我认为我会问这里。如何建立一个以.json端点与Sequelize查询?

小摘录(上https://github.com/NatuMyers/A.M.E.N.SQL-Stack代码):

// VARS ----------------------------- 
var express  = require('express') 
    , bodyParser  = require('body-parser') 
    , errorHandler = require('errorhandler') 
    , methodOverride = require('method-override') 
    , morgan   = require('morgan') 
    , http   = require('http') 
    , path   = require('path') 
    , db    = require('./models') 

var router = require('express').Router(); 
var app = express() 

// all environments 
app.set('port', process.env.PORT || 3000) 
app.set('views', __dirname + '/views') 
app.set('view engine', 'jade') 
app.use(morgan('dev')) 
app.use(bodyParser()) 
app.use(methodOverride()) 
app.use(express.static(path.join(__dirname, 'public'))) 

// SEQUELIZE MODELS 
var userVar  = require('./models/user'); 

// dev only 
if ('development' === app.get('env')) { 
     app.use(errorHandler()) 
} 

// Make db, and make it listen 
db 
.sequelize 
.sync() 
.complete(function(err) { 
    if (err) { 
    throw err 
    } else { 
       http.createServer(app).listen(app.get('port'), function() { 
       console.log('Express server listening on port ' + app.get('port')) 
      }) 
    } 
    }) 

// HTTP GET endpoints 
module.exports = function() { 

    router.get('/', function(req, res, next){ 
     res.json({ message: 'This works at localhost:3000/api but getting a list of users is a pain :(' }); 
    }); 

    // question 
    router.get('/users', function(req, res, next){ 
     res.json(/* I need to make sequelize send a part of the User db here. */); 
    }); 

return router; 
}; 

回答

0

我从这个通过使用Epilogue.js(在香草方式)上移动。

我加款内嵌Sequelize(我浪费了很多时间试图导入模型),然后添加任何中间件以及创建基于下面的语法RESTful API实。

// 1. ADD SEQUELIZE MODELS ---- ---- ---- ---- 
var database = new Sequelize('raptroopdb', 'root', 'strongpassword'); 

var Employee = database.define('Employee', { 
    name: Sequelize.STRING, 
    hireDate: Sequelize.DATE 
}); 

// Add Account model with foreign key constraint to Employee 
var Account = database.define('Account', { 
    name: Sequelize.STRING, 
    managerId: { 
     type: Sequelize.INTEGER, 

     references: { 
      // This is a reference to model Employee 
      model: Employee, 

      // This is the column name of the referenced model 
      key: 'id', 

     } 
    } 
}); 

// 2. ROOM FOR MIDDLEWARE to use for all requests 
router.use(function(req, res, next) { 
    // do logging 
    console.log('In server.js'); 

    // make sure we go to the next routes and don't stop here 
    next(); 
}); 

// Initialize epilogue 
epilogue.initialize({ 
    app: app, 
    sequelize: database 
}); 

app.use(express.static(__dirname + "/public")); 
app.get('/', function(req, res) { 
    res.redirect('/public/index.html'); 
}); 



// 3. Create REST resource 
var employeeResource = epilogue.resource({ 
    model: Employee, 
    endpoints: ['/api/employees', '/api/employees/:id'] 
}); 

var acctResource = epilogue.resource({ 
    model: Account, 
    endpoints: ['/api/accounts', '/api/accounts/:id'] 
}); 

// Create database and listen 
database 
    .sync({ 
     force: false 
    }) 
    .then(function() { 
     app.listen(port, function() { 
      console.log('listening at %s', port); 
     }); 
    });