2014-04-16 27 views
0

我正在嘗試使用Express和Waterline ORM構建API。我使用的適配器是mongodb適配器。我試圖從Sails之外做到這一點的原因是我希望更好地理解水線ORM,這樣我就可以爲Sails Couch Adapter做出貢獻。這是我得到的。使用Express和Waterline ORM構建api ORM

var express = require('express'), 
    app = express(), 
    bodyParser = require('body-parser'), 
    methodOverride = require('method-override'), 
    Waterline = require('waterline'); 

var mongoAdapter = require('sails-mongo'); 

app.use(bodyParser()); 
app.use(methodOverride()); 

mongoAdapter.host = 'localhost'; 
mongoAdapter.schema = true; 
mongoAdapter.database = 'waterline-mongo'; 

app.models = {}; 

var User = Waterline.Collection.extend({ 

    adapter:'mongodb', 
    // identity: 'user', 

    attributes: { 
    first_name: 'string', 
    last_name: 'string' 
    } 
}); 

app.post('/users', function(req, res) { 
    console.log(req.body); 
    app.models.user.create(req.body, function(err, model) { 
    if(err) return res.json({ err: err }, 500); 
    res.json(model); 
    }); 
}); 

new User({ adapters: { mongodb: mongoAdapter }}, function(err, collection) { 
    app.models.user = collection; 

    // Start Server 
    app.listen(3000); 
    console.log('Listening on 3000'); 
}); 

因此,據我所知,集合將具有由Waterline API定義的創建/更新/去除方法。但是,當我發佈到/用戶,我得到'不能調用方法「創建」未定義。我使用的Waterline版本是0.9.16。我可能會設置錯誤。提前致謝。

回答

3

你必須添加這些指令:

var orm = new Waterline(); 

var config = { 
    // Setup Adapters 
    // Creates named adapters that have have been required 
    adapters: { 
     'default': 'mongo', 
     mongo: require('sails-mongo') 
    }, 

    // Build Connections Config 
    // Setup connections using the named adapter configs 
    connections: { 
     'default': { 
      adapter: 'mongo', 
      url: 'mongodb://localhost:27017/unparse' 
     } 
    } 
}; 

var User = Waterline.Collection.extend({ 
    identity: 'user', 
    connection: 'default', 

    attributes: { 
     first_name: 'string', 
     last_name: 'string' 
    } 
}); 
orm.loadCollection(User); 

orm.initialize(config, function(err, data) { 
    if (err) { 
     throw err; 
    } 

    app.models = data.collections; 
    app.connections = data.connections; 

    app.listen(3000); 
}); 
相關問題