因为工作中用到了waterline,在此简单记录一下其创建操作过程。
1,安装相关模块。
var WaterLine = require('waterline');
var MysqlAdapter = require('sails-mysql');
var MongoAdapter = require('sails-mongo');
2,配置适配器,适配器的作用就像一个翻译小组,里面有懂各种不同数据库语言的翻译官,你只需要说你的语言就行,接下来的就交给adapters翻译小组,下面就是支持mongo和mysql的adapter的配置,你还可以加入redis、sqlserver的。
var adapters = {
mysql: MysqlAdapter,
mongo: MongoAdapter,
default: 'mysql'
}
3,配置与数据库的链接,这里填入数据库的连入信息
var connections = {
mysql: {
adapter: "mysql",
host: "127.0.0.1",
port: 3306,
database: "test_waterline",
user:'test',
password:'123456'
},
mongo: {
adapter: "mongo",
host: "127.0.0.1",
port: 27017,
database: "test_waterline"
}
}
4、上面说的你的语言就在下面定义语言格式,即用waterline定义数据库中的表字段属性,而不用去关心连接的是关系型数据库或者是nosql。
//下面想要在mysql的test_waterline库中新建一个user表,使用waterline为user表配置数据集合。
var tableUser = WaterLine.Collection.extend({
identity: 'user',//集合的id(对应数据库的表)
connection: 'mysql',//要操作的数据库
schema: true,//强制模式
/*下面进行集合中对应属性的配置,用作对每一个属性进行定义校验方案,
主键用户名为一个长度为4-15的字符串,用户密码为长度大于6的字符串*/
attributes: {
username: {
type: 'string',
required: true,
minLength: 4,
maxLength: 15,
primaryKey: true,
unique: true,
notEmpty: true,//已经定义了长度,这里没有意义,作为演示
},
userpass: {
type: 'string',
required: true,
minLength: 6,
},
address: {
type: 'string'
}
},
beforeCreate: function (value, areturn) {
value.address = 'shanghai';
console.log('beforeCreate');
return areturn();
}
});
5,新建一个orm实例,并将上面的user表集合配置加载进来。
//new 出一个实例
var orm = new WaterLine();
//将配置的数据集合加载进示例
orm.loadCollection(tableUser);
6、对orm进行初始化,并在回调中对test_waterline.user表操作,增加一行用户名为testuser的数据
var config = {
adapters: adapters,
connections: connections
}
//下面进行初始化
orm.initialize(config, function (err, models) {
if (err) {
console.log("orm init failed,err:%s", err);
return;
}
var oneUser = {
username: "testuser",
userpass: "1234567",
}
models.collections.user.create(oneUser, function (err, user) {
if (err) {
console.log('err:+%s。', err);
}
else {
console.log('create success:\n', user)
}
});
});
运行结果如下:
附上代码:
/*waterline使用测试*/
'use strict'
//npm安装以下模块
var WaterLine = require('waterline');
var MysqlAdapter = require('sails-mysql');
var MongoAdapter = require('sails-mongo');
//配置适配器
var adapters = {
mysql: MysqlAdapter,
mongo: MongoAdapter,
default: 'mysql'
}
//配置与数据库的连接
var connections = {
mysql: {
adapter: "mysql",
host: "127.0.0.1",
port: 3306,
database: "test_waterline",
user:'test',
password:'123456'
},
mongo: {
adapter: "mongo",
host: "127.0.0.1",
port: 27017,
database: "test_waterline"
}
}
//使用waterline为user表配置数据集合
var tableUser = WaterLine.Collection.extend({
identity: 'user',//集合的id(对应数据库的表)
connection: 'mysql',//要操作的数据库
schema: true,//强制模式
/*下面进行集合中对应属性的配置,用作对每一个属性进行定义校验方案,
主键用户名为一个长度为4-15的字符串,用户密码为长度大于6的字符串*/
attributes: {
username: {
type: 'string',
required: true,
minLength: 4,
maxLength: 15,
primaryKey: true,
unique: true,
notEmpty: true,//已经定义了长度,这里没有意义,作为演示
},
userpass: {
type: 'string',
required: true,
minLength: 6,
},
address: {
type: 'string'
}
},
beforeCreate: function (value, areturn) {
value.address = 'shanghai';
console.log('beforeCreate');
return areturn();
}
});
//new 出一个实例
var orm = new WaterLine();
//将配置的数据集合加载进示例
orm.loadCollection(tableUser);
var config = {
adapters: adapters,
connections: connections
}
//下面进行初始化
orm.initialize(config, function (err, models) {
if (err) {
console.log("orm init failed,err:%s", err);
return;
}
var oneUser = {
username: "testuser",
userpass: "1234567",
}
models.collections.user.create(oneUser, function (err, user) {
if (err) {
console.log('err:+%s。', err);
}
else {
console.log('create success:\n', user)
}
})
});