将插入值快速插入MySQL数据库

时间:2015-10-04 11:46:19

标签: mysql node.js express-4

问题已解决。请看下面。

我是Express和NodeJS的新手,抛弃了Laravel和PHP。

我想要做的是能够将记录添加到MySQL数据库中,但我无法连接点。我正在学习本系列教程:

http://eddyjs.com/bookshelf-js/

http://eddyjs.com/using-mysql-with-bookshelf-js-part-2-using-the-database/

有两个db变量,我无法理解如何使用它们。

这是错误。

  

无法读取未定义

的属性'extend'      

TypeError:无法读取undefined的属性'extend'       在对象。 (/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)       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'
});

2 个答案:

答案 0 :(得分:1)

如果我正确理解了项目的目录结构,那么models目录旁边就有了routes目录,对吧? 如果是这种情况,你需要改变routes / index.js中的require来使用../,这样它就会到达正确的位置:

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

答案 1 :(得分:0)

更改db.js时问题解决了。关键是module.exports = db;部分,我想。

var knex = require('knex')({
    client: 'mysql',
    connection: {
        host     : 'localhost',
        user     : 'root',
        password : 'root',
        port    : 8889,
        database : 'bosluk',
        charset  : 'utf8'
    }
});

var db = require('bookshelf')(knex);

module.exports = db;