2016-03-01 48 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); 
     }); 
    });