ЗАДАЧА РЕШЕНА. Пожалуйста, смотрите ниже.
Я новичок в Express и NodeJS, отказался от Laravel и PHP.
Что я хочу сделать, так это добавить запись в базу данных MySQL, но я не могу соединить точки. Я следую этой серии руководств:
http://eddyjs.com/bookshelf-js/
http://eddyjs.com/using-mysql-with-bookshelf-js-part-2-using-the-database/
Есть две переменные db, я не мог понять, как их использовать.
Вот ошибка.
Невозможно прочитать свойство «расширить» неопределенного
TypeError: Не удается прочитать свойство «расширить» неопределенного в объекте. (/Applications/MAMP/htdocs/myapp/myapp/models/User.js:5:20) в Module._compile (module.js:460:26) в Object.Module._extensions..js (module.js:478) :10) в Module.load (module.js:355:32) в Function.Module._load (module.js:310:12) в Module.require (module.js:365:17) в require (module.js :384:17)
Установил все зависимости через npm, все ок.
"dependencies": {
"body-parser": "~1.13.2",
"bookshelf": "^0.8.2",
"cookie-parser": "~1.3.5",
"debug": "~2.2.0",
"express": "~4.13.1",
"jade": "~1.11.0",
"jquery": "^2.1.4",
"knex": "^0.8.6",
"morgan": "~1.6.1",
"mysql": "^2.9.0",
"serve-favicon": "~2.3.0"
}
Я держу свои модели в папке моделей.
User.js
var db = require('./db');
var User = db.Model.extend({
tableName: 'users'
});
module.exports = User;
маршруты/index.js
router.get('/add', function(req,res,next) {
var User = require('../models/User');
new User({
'name': 'Edwin',
'pet': 'dog'
})
.save()
.then(function (newUser) {
console.log('user created!', newUser);
});
});
db.js (соединение с базой данных должно быть открыто один раз, верно? Так что оно должно жить здесь)
var knex = require('knex')({
client: 'mysql',
connection: {
host : 'localhost',
user : 'root',
password : 'root',
port : 8889,
database : 'databasename',
charset : 'utf8'
}
});
var bookshelf = require('bookshelf')(knex);
var User = bookshelf.Model.extend({
tableName: 'users'
});