【问题标题】:Building an api with Express and Waterline ORM使用 Express 和 Waterline ORM 构建 api
【发布时间】:2014-04-16 13:56:00
【问题描述】:

我正在尝试使用 Express 和 Waterline ORM 构建 API。我使用的适配器是 mongodb-adapter。我尝试从 Sails 外部执行此操作的原因是我想更好地了解 Waterline ORM,以便我可以为 Sails Couch Adapter 做出贡献。这是我得到的。

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 定义的创建/更新/销毁方法。但是,当我发布到 /users 时,我得到一个未定义的“无法调用方法“创建”。我使用的 Waterline 版本是 0.9.16。我可能设置错了。提前致谢。

【问题讨论】:

    标签: javascript node.js express sails.js waterline


    【解决方案1】:

    您必须添加这些说明:

    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);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多