nodejs中waterline的使用簡述

? ? 因為工作中用到了waterline,在此簡單記錄一下其創(chuàng)建操作過程。

1,安裝相關(guān)模塊。

var WaterLine = require('waterline');

var MysqlAdapter = require('sails-mysql');

var MongoAdapter = require('sails-mongo');

2,配置適配器,適配器的作用就像一個翻譯小組,里面有懂各種不同數(shù)據(jù)庫語言的翻譯官,你只需要說你的語言就行,接下來的就交給adapters翻譯小組,下面就是支持mongo和mysql的adapter的配置,你還可以加入redis、sqlserver的。

var adapters = {

? ? mysql: MysqlAdapter,

? ? mongo: MongoAdapter,

? ? default: 'mysql'

}

3,配置與數(shù)據(jù)庫的鏈接,這里填入數(shù)據(jù)庫的連入信息

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定義數(shù)據(jù)庫中的表字段屬性,而不用去關(guān)心連接的是關(guān)系型數(shù)據(jù)庫或者是nosql。

? ? //下面想要在mysql的test_waterline庫中新建一個user表,使用waterline為user表配置數(shù)據(jù)集合。

var tableUser = WaterLine.Collection.extend({

? ? identity: 'user',//集合的id(對應(yīng)數(shù)據(jù)庫的表)

? ? connection: 'mysql',//要操作的數(shù)據(jù)庫

? ? schema: true,//強制模式

/*下面進行集合中對應(yīng)屬性的配置,用作對每一個屬性進行定義校驗方案,

主鍵用戶名為一個長度為4-15的字符串,用戶密碼為長度大于6的字符串*/

? ? attributes: {

? ? ? ? username: {

? ? ? ? ? ? type: 'string',

? ? ? ? ? ? required: true,

? ? ? ? ? ? minLength: 4,

? ? ? ? ? ? maxLength: 15,

? ? ? ? ? ? primaryKey: true,

? ? ? ? ?? unique: true,

? ? ? ? ? ? notEmpty: true,//已經(jīng)定義了長度,這里沒有意義,作為演示

? ? ? ? },

? ? ? ? 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();

//將配置的數(shù)據(jù)集合加載進示例

orm.loadCollection(tableUser);

6、對orm進行初始化,并在回調(diào)中對test_waterline.user表操作,增加一行用戶名為testuser的數(shù)據(jù)

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)

? ? }

? ? });

});

運行結(jié)果如下:

附上代碼:

/*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'

}

//配置與數(shù)據(jù)庫的連接

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表配置數(shù)據(jù)集合

var tableUser = WaterLine.Collection.extend({

identity: 'user',//集合的id(對應(yīng)數(shù)據(jù)庫的表)

connection: 'mysql',//要操作的數(shù)據(jù)庫

schema: true,//強制模式

/*下面進行集合中對應(yīng)屬性的配置,用作對每一個屬性進行定義校驗方案,

主鍵用戶名為一個長度為4-15的字符串,用戶密碼為長度大于6的字符串*/

attributes: {

username: {

type: 'string',

required: true,

minLength: 4,

maxLength: 15,

primaryKey: true,

unique: true,

notEmpty: true,//已經(jīng)定義了長度,這里沒有意義,作為演示

},

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();

//將配置的數(shù)據(jù)集合加載進示例

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)

}

})

});

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容