Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Express将值插入MySQL数据库_Mysql_Node.js_Express 4 - Fatal编程技术网

Express将值插入MySQL数据库

Express将值插入MySQL数据库,mysql,node.js,express-4,Mysql,Node.js,Express 4,问题解决了。请看下面 我对Express和NodeJS是新手,抛弃了Laravel和PHP 我想做的是能够将一条记录添加到MySQL数据库中,但我无法连接这些点。以下是本系列教程: 有两个db变量,我不知道如何使用它们 这里是错误 无法读取未定义的属性“extend” TypeError:无法读取未定义的属性“extend” 反对。(/Applications/MAMP/htdocs/myapp/myapp/models/User.js:5:20) 在模块处编译(Module.js:460:

问题解决了。请看下面

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

我想做的是能够将一条记录添加到MySQL数据库中,但我无法连接这些点。以下是本系列教程:

有两个db变量,我不知道如何使用它们

这里是错误

无法读取未定义的属性“extend”

TypeError:无法读取未定义的属性“extend” 反对。(/Applications/MAMP/htdocs/myapp/myapp/models/User.js:5:20) 在模块处编译(Module.js:460:26) 在Object.Module.\u extensions..js(Module.js:478:10) 在Module.load(Module.js:355:32) 在Function.Module.\u加载(Module.js:310:12) at Module.require(Module.js:365:17) 根据需要(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;
routes/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(数据库连接应该打开一次,对吗?所以它必须在这里活动)


如果我正确理解了项目的目录结构,那么模型目录旁边就有routes目录,对吗? 如果是这种情况,您需要将routes/index.js中的require更改为使用../,这样它将到达正确的位置:

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

当我更改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;

谢谢,我错过了。现在我得到一个新的错误。无法读取未定义类型的属性“extend”错误:无法读取对象处未定义类型的属性“extend”。(/Applications/MAMP/htdocs/myapp/myapp/models/User.js:5:20)在Module._compile(Module.js:460:26)正确,如果您不导出任何内容,模块将不会为变量分配任何内容。值得注意的是,如果要导出多个内容,而不是使用
module.exports
,请使用
exports.someThing
,这样
someThing
将成为您分配模块的对象的属性。此外,如果模块位于同一目录中,则不需要在模块require路径中输入./。
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;