Knex
Knex.js 教程
Knex.js
在本教程中,我们使用
安装Knex.js
首先,我们需要安装
$ nodejs -v
v9.11.2
我们使用
$ npm init
我们启动一个新的
$ npm i knex mysql2
我们安装mysql
和mysql2
Knex.js 的数据库版本
在第一个示例中,我们找出
version.js
const options = {
client: "mysql2",
connection: {
host: "127.0.0.1",
user: "user12",
password: "s$cret",
database: "mydb"
}
};
const knex = require("knex")(options);
knex
.raw("SELECT VERSION()")
.then(version => console.log(version[0][0]))
.catch(err => {
console.log(err);
throw err;
})
.finally(() => {
knex.destroy();
});
该示例返回
const options = {
client: "mysql2",
connection: {
host: "127.0.0.1",
user: "user12",
password: "s$cret",
database: "mydb"
}
};
这些是
const knex = require("knex")(options);
我们加载
knex
.raw("SELECT VERSION()")
.then(version => console.log(version[0][0]))
.catch(err => {
console.log(err);
throw err;
})
.finally(() => {
knex.destroy();
});
使用raw()
函数,我们执行destroy()
关闭数据库连接。
$ node version.js
TextRow { 'VERSION()': '5.7.22-0ubuntu0.16.04.1' }
这是输出。
Knex.js 创建表
在第二个示例中,我们创建一个新的数据库表。
create_table.js
const options = {
client: "mysql2",
connection: {
host: "127.0.0.1",
user: "user12",
password: "s$cret",
database: "mydb"
}
};
const knex = require("knex")(options);
knex.schema
.createTable("cars", table => {
table.increments("id");
table.string("name");
table.integer("price");
})
.then(() => console.log("table created"))
.catch(err => {
console.log(err);
throw err;
})
.finally(() => {
knex.destroy();
});
使用createTable()
函数创建一个新表我们定义模式以包含三列:id,名称和价格。
Knex.js 插入数据
接下来,我们将向创建的表中插入一些数据。
insert_cars.js
const options = {
client: "mysql2",
connection: {
host: "127.0.0.1",
user: "user12",
password: "s$cret",
database: "mydb"
}
};
const knex = require("knex")(options);
const cars = [
{ name: "Audi", price: 52642 },
{ name: "Mercedes", price: 57127 },
{ name: "Skoda", price: 9000 },
{ name: "Volvo", price: 29000 },
{ name: "Bentley", price: 350000 },
{ name: "Citroen", price: 21000 },
{ name: "Hummer", price: 41400 },
{ name: "Volkswagen", price: 21600 }
];
knex("cars")
.insert(cars)
.then(() => console.log("data inserted"))
.catch(err => {
console.log(err);
throw err;
})
.finally(() => {
knex.destroy();
});
我们用knex('cars)
选择cars
表,并用insert()
方法插入八行。
Knex.js 选择所有行
在下面的示例中,我们从cars
表中选择所有行。
select_cars.js
const options = {
client: "mysql2",
connection: {
host: "127.0.0.1",
user: "user12",
password: "s$cret",
database: "mydb"
}
};
const knex = require("knex")(options);
knex
.from("cars")
.select("*")
.then(rows => {
for (row of rows) {
console.log(`${row["id"]} ${row["name"]} ${row["price"]}`);
}
})
.catch(err => {
console.log(err);
throw err;
})
.finally(() => {
knex.destroy();
});
我们使用select()
功能选择所有行这次我们选择了具有from()
功能的表格然后,我们遍历返回的行数组并打印三个字段。
$ node select_cars.js
1 Audi 52642
2 Mercedes 57127
3 Skoda 9000
4 Volvo 29000
5 Bentley 350000
6 Citroen 21000
7 Hummer 41400
8 Volkswagen 21600
这是输出。
Knex.js 使用WHERE
限制输出
select_where.js
const options = {
client: "mysql2",
connection: "mysql://root:andrea@localhost:3306/mydb"
};
const knex = require("knex")(options);
knex
.from("cars")
.select("name", "price")
.where("price", ">", "50000")
.then(rows => {
for (row of rows) {
console.log(`${row["name"]} ${row["price"]}`);
}
})
.catch(err => {
console.log(err);
throw err;
})
.finally(() => {
knex.destroy();
});
该示例返回价格高于
const options = {
client: "mysql2",
connection: "mysql://user12:s$cret@localhost:3306/mydb"
};
这次,我们提供了一个连接
knex
.from("cars")
.select("name", "price")
.where("price", ">", "50000");
我们用select()
选择了两列,并在where()
函数中添加了WHERE
子句。
$ node select_where.js
Audi 52642
Mercedes 57127
Bentley 350000
三辆汽车比
Knex.js 排序行
我们可以使用orderBy()
功能订购数据。
order_cars.js
const options = {
client: "mysql2",
connection: {
host: "127.0.0.1",
user: "user12",
password: "s$cret",
database: "mydb"
}
};
const knex = require("knex")(options);
knex
.from("cars")
.select("name", "price")
.orderBy("price", "desc")
.then(rows => {
for (row of rows) {
console.log(`${row["name"]} ${row["price"]}`);
}
})
.catch(err => {
console.log(err);
throw err;
})
.finally(() => {
knex.destroy();
});
该示例选择所有汽车,然后按价格降序对其进行排序。
$ node order_cars.js
Bentley 350000
Mercedes 57127
Audi 52642
Hummer 41400
Volvo 29000
Volkswagen 21600
Citroen 21000
Skoda 9000
这是输出。