TypeError:使用mysql时,Schema不是构造函数

时间:2017-10-28 08:20:08

标签: mysql node.js angular2-forms

var mysql  = require('mysql');
var Schema = mysql.Schema;

var HumanSchema = new Schema({
    fname  : String,
    lname  : String,
    age    : String,
    address: String,
    city   : String
})

var Model = mysql.Model('Human',HumanSchema);

module.exports = Model;

这是我在Angular 2和node js app中的Model代码。 编译时说

D:\Angular2MEANStack-master\models\model.js:3
var HumanSchema = new Schema({
                  ^

TypeError: Schema is not a constructor
    at Object.<anonymous> (D:\Angular2MEANStack-master\models\model.js:3:19)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (D:\Angular2MEANStack-master\routes\api.js:3:13)
    at Module._compile (module.js:570:32)

我已经安装了所有必需的依赖项。但是无法部署这个。

2 个答案:

答案 0 :(得分:0)

从我所看到的,您实际上无法使用该npm包创建一个mysql数据库模型。您需要使用ORM之类的sequelize连接工具才能在mysql数据库中建立连接并执行操作。您可能决定查看此续集文档,了解如何能够执行此操作。

http://docs.sequelizejs.com/manual/installation/getting-started

答案 1 :(得分:0)

mysql 只是MySQL的node.js驱动程序。

var mysql  = require('mysql');

在上面的代码中你正在使用&#34; mysql&#34;驱动程序,您只能使用库提供的特定功能。

请参阅https://www.npmjs.com/package/mysqlhttps://github.com/mysqljs/mysql

上的文档
// Sample code with mysql
var mysql = require('mysql');
var connection = mysql.createConnection({
    host: 'localhost',
    user: 'me',
    password: 'secret',
    database: 'my_db'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();

现在,如果您正在寻找能够很好地处理数据库交互的ORM,您可以使用Sequelize