Создание API с помощью Express и Waterline ORM

Я пытаюсь создать API с Express и Waterline ORM. Я использую адаптер mongodb-adapter. Причина, по которой я пытаюсь сделать это вне Sails, заключается в том, что я хочу лучше понять ORM Waterline, чтобы внести свой вклад в 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');
});

Итак, насколько я понимаю, коллекция будет иметь методы создания/обновления/уничтожения, как определено API Waterline. Однако, когда я публикую в /users, я получаю сообщение «не могу вызвать метод «создать» неопределенного. Я использую версию Waterline 0.9.16. Я, наверное, неправильно это настраиваю. Заранее спасибо.


person JoelV    schedule 16.04.2014    source источник


Ответы (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);
});
person emersion    schedule 02.08.2014