ПРОБЛЕМА РЕШАЕТ. Посмотрите ниже.Экспресс значения вставки в базу данных MySQL
Я новичок в Экспрессе и NodeJS, брошенном Laravel и PHP.
Что я хочу сделать, так это добавить запись в базу данных MySQL, но я не могу подключить точки. Я следую за этот учебник серии:
http://eddyjs.com/bookshelf-js/
http://eddyjs.com/using-mysql-with-bookshelf-js-part-2-using-the-database/
Есть две дБ переменные, я не мог понять, как использовать их.
Вот ошибка.
Cannot read property 'extend' of undefined
TypeError: Cannot read property 'extend' of undefined at Object. (/Applications/MAMP/htdocs/myapp/myapp/models/User.js:5:20) at Module._compile (module.js:460:26) at Object.Module._extensions..js (module.js:478:10) at Module.load (module.js:355:32) at Function.Module._load (module.js:310:12) at Module.require (module.js:365:17) at 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'
});
Правильно, если вы ничего не экспортируете, благодарите включение модуль ничего не будет присваивать переменной. Следует отметить, что если вы хотите экспортировать несколько файлов, вместо использования 'module.exports', вместо этого используйте' export.someThing', таким образом 'someThing' будет свойством объекта, которому вы назначили модуль. Кроме того, если модуль находится в том же каталоге, нет необходимости в ./ в вашем модуле. – OriginalEXE