2014-11-25 3 views
1

Я использую node-orm2 с mysql в моем проекте. Я уже создал таблицы базы данных, и я могу запрашивать/находить данные в своей БД. Однако, когда я хочу вставить новые данные, ничего не происходит - ошибки в обратном вызове нет.Создание новой модели не работает - нет ошибки

Вот соответствующий код:

класс Модель:

module.exports = function (orm, db) { 
    var Comment = db.define('comment', { 
     body: {type: 'text'} 
    }); 
}; 

index.js в папке модели:

var orm  = require('orm'); 
var settings = require('../config/settings'); 

var connection = null; 

function setup(db, cb) { 
    require('./comment')(orm, db); 

    return cb(null, db); 
} 

module.exports = function (cb) { 
    if (connection) return cb(null, connection); 

    orm.connect(settings.database, function (err, db) { 
     if (err) return cb(err); 

     connection = db; 
     db.settings.set('instance.returnAllErrors', true); 
     db.settings.set('connection.debug', true); 
     setup(db, cb); 
    }); 
}; 

Контроллер:

var orm  = require('orm'); 

exports.create = function(req, res){ 
    var testcomment = {}; 
    testcomment.body = "test comment"; 
    req.models.comment.create(testcomment, function (err, message) { 
      if (err) return console.log(err); 
      return res.send(200, message); 
     }); 
}; 

окружающей среды. js

var path = require('path'); 
var express = require('express'); 
var settings = require('./settings'); 
var models = require('../models/'); 
var logger = require('morgan'); 
var bodyParser = require('body-parser'); 
var methodOverride = require('method-override'); 

module.exports = function (app) { 
    app.use(express.static(path.join(settings.path, 'public'))); 
    app.use(logger('dev')); 
    app.use(bodyParser.json()); 
    app.use(bodyParser.urlencoded({extended: true})); 
    app.use(methodOverride()); 
    app.use(function (req, res, next) { 
     models(function (err, db) { 
      if (err) return next(err); 

      req.models = db.models; 
      req.db = db; 

      return next(); 
     }); 
    }) 
}; 

Settings.js:

var path  = require('path'); 

var settings = { 
    path  : path.normalize(path.join(__dirname, '..')), 
    port  : process.env.NODE_PORT || 3001, 
    database : { 
     protocol : "mysql", 
     host  : "localhost", 
     port  : "3306", 
     database : "taxidatabase", 
     user  : "root", 
     password : "admin" 
    } 
}; 

module.exports = settings; 

Я в основном по той же схеме в примере приложения в узле-orm2 - но он не работает. Любая идея, почему?

Спасибо!

ответ

1

Перед добавлением ничего таблицы вам нужно синхронизацииDB по крайней мере один раз после того, как вы определили модели для создания таблиц:

var models = require('../app/models/'); 

models(function (err, db) { 
    if (err) throw err; 
    db.sync(function (err) { 
    if (err) throw err; 
    console.log('Done!'); 
    }); 
}); 

Или, может быть, синхронизируя комментарий модель будет делать:

var orm  = require('orm'); 

exports.create = function(req, res){ 
    var testcomment = {}; 
    testcomment.body = "test comment"; 
    req.models.comment.create(testcomment, function (err, message) { 
     if (err) return console.log(err); 
     return res.send(200, message); 
    }); 

    req.models.comment.sync(function (err) { 
     if (err) throw err; 
     console.log('Done!'); 
    }); 
};