Sequelize 中文API文檔-1. 快速入門鹤啡、Sequelize類

轉(zhuǎn)載?https://itbilu.com/nodejs/npm/VkYIaRPz-.html#induction-connection

Sequelize類是引用sequlize模塊后獲取一個(gè)頂級(jí)對(duì)象,我們通過(guò)它來(lái)創(chuàng)建sequlize實(shí)例险胰,也可以通過(guò)該對(duì)象來(lái)獲取模內(nèi)其它對(duì)象的引用岳服,如:Utils工具類、Transaction事務(wù)類等吆视。創(chuàng)建實(shí)例后典挑,可以通過(guò)實(shí)例來(lái)創(chuàng)建或定義Model(模型)、執(zhí)行查詢啦吧、同步數(shù)據(jù)庫(kù)結(jié)構(gòu)等操作您觉。

快速入門

1.1 安裝

1.2 建立連接

1.3?model定義

1.4?Promise

Sequelize類

2.1?new Sequelize()?- 實(shí)例化

2.2?new Sequelize()?- 通過(guò)URI實(shí)例化

2.3?sequelize.models?- 實(shí)例中已定義的模型

2.4?sequelize.define()?- 模型定義

2.5?Sequelize?- 頂級(jí)對(duì)象

2.6?Utils?- 工具類

2.7?Promise?- Promise對(duì)象

2.8?QueryTypes?- 查詢類型枚舉

2.9?Validator?-?validator.js對(duì)象

2.10?Transaction?- 事務(wù)對(duì)象

2.11?Deferrable?- 延時(shí)對(duì)象

2.12?Instance?- 實(shí)例對(duì)象

2.13?Association?- 聯(lián)合關(guān)系對(duì)象

2.14?Error?- 錯(cuò)誤對(duì)象

2.15?ValidationError?- 驗(yàn)證失敗錯(cuò)誤對(duì)象

2.16?DatabaseError?- 數(shù)據(jù)庫(kù)錯(cuò)誤對(duì)象

2.17?TimeoutError?- 查詢超時(shí)錯(cuò)誤對(duì)象

2.18?UniqueConstraintError?- 唯一性錯(cuò)誤對(duì)象

2.19?ExclusionConstraintError?- 排出約束錯(cuò)誤對(duì)象

2.20?ForeignKeyConstraintError?- 外鍵約束錯(cuò)誤對(duì)象

2.21?ConnectionError?- 連接錯(cuò)誤對(duì)象

2.22?ConnectionRefusedError?- 連接拒絕錯(cuò)誤對(duì)象

2.23?AccessDeniedError?- 無(wú)訪問(wèn)權(quán)限錯(cuò)誤對(duì)象

2.24?HostNotFoundError?- 主機(jī)未找到錯(cuò)誤對(duì)象

2.25?InvalidConnectionError?- 無(wú)效鏈接錯(cuò)誤對(duì)象

2.26?ConnectionTimedOutError?- 鏈接超時(shí)錯(cuò)誤對(duì)象

2.27?InstanceError?- 實(shí)例錯(cuò)誤對(duì)象

2.28?sequelize.getDialect()?- 返回?cái)?shù)據(jù)庫(kù)類型

2.29?sequelize.getQueryInterface()?- 返回QueryInterface實(shí)例

2.30?sequelize.define()?- 模型定義

2.31?sequelize.model()?- 獲取模型

2.32?sequelize.isDefined()?- 檢查模型是否定義

2.33?sequelize.import()?- 模型導(dǎo)入

2.34?sequelize.query()?- 執(zhí)行查詢

2.35?sequelize.set()?- 設(shè)置變量

2.36?sequelize.escape()?- 編碼

2.37?sequelize.createSchema()?- 創(chuàng)建數(shù)據(jù)庫(kù) schema

2.38?sequelize.showAllSchemas()?- 查詢已定義的schema

2.39?sequelize.dropSchema()?- 刪除定義的schema

2.40?sequelize.dropAllSchemas()?- 刪除所有schema

2.41?sequelize.sync()?- 同步模型到數(shù)據(jù)庫(kù)

2.42?sequelize.truncate()?- 截?cái)嘁讯x的表

2.43?sequelize.drop()?- 刪除表

2.44?sequelize.authenticate()?- 驗(yàn)證連接

2.45?sequelize.fn()?- 函數(shù)調(diào)用

2.46?sequelize.col()?- 列對(duì)象

2.47?sequelize.cast()?- cast函數(shù)

2.48?sequelize.literal()?- 字面量對(duì)象

2.49?sequelize.and()?- AND查詢

2.50?sequelize.or()?- OR查詢

2.51?sequelize.json()?- json嵌套對(duì)象

2.52?sequelize.where()?- 指定WHERE條件

2.53?sequelize.transaction()?- 啟動(dòng)事務(wù)

1. 快速入門

1.1 安裝

Sequelize可以通過(guò)npm命令獲取,除安裝sequelize模塊外還要安裝所使用數(shù)據(jù)的驅(qū)動(dòng)模塊:

$ npm install --save sequelize

# 還需要安裝以下之一:

$ npm install --save pg pg-hstore? // postgreSql

$ npm install --save mysql // mysql 或 mariadb

$ npm install --save sqlite3?

$ npm install --save tedious // MSSQL

1.2 建立連接

Sequelize會(huì)在初始化時(shí)設(shè)置一個(gè)連接池授滓,這樣你應(yīng)該為每個(gè)數(shù)據(jù)庫(kù)創(chuàng)建一個(gè)實(shí)例:

var sequelize = new Sequelize('database', 'username', 'password', {

? host: 'localhost',

? dialect: 'mysql'|'mariadb'|'sqlite'|'postgres'|'mssql',

? pool: {

? ? max: 5,

? ? min: 0,

? ? idle: 10000

? },

? // 僅 SQLite 適用

? storage: 'path/to/database.sqlite'

});

// 或者可以簡(jiǎn)單的使用一個(gè)連接 uri

var sequelize = new Sequelize('postgres://user:pass@example.com:5432/dbname');

1.3?model定義

model定義格式為sequelize.define('name', {attributes}, {options}):

var User = sequelize.define('user', {

? firstName: {

? ? type: Sequelize.STRING,

? ? field: 'first_name' // Will result in an attribute that is firstName when user facing but first_name in the database

? },

? lastName: {

? ? type: Sequelize.STRING

? }

}, {

? freezeTableName: true // Model 對(duì)應(yīng)的表名將與model名相同

});

User.sync({force: true}).then(function () {

? // 已創(chuàng)建數(shù)據(jù)表

? return User.create({

? ? firstName: 'John',

? ? lastName: 'Hancock'

? });

});

1.4?Promise

Sequelize基于Promise實(shí)現(xiàn)異步流程控制琳水,但其使用的并不是ECMAScript 6中規(guī)定的標(biāo)準(zhǔn)Promise對(duì)象,而是使用bluebird般堆,這個(gè)模塊是對(duì)原生Promise的一個(gè)擴(kuò)展在孝。

由于是基于Promise實(shí)現(xiàn)的流程控制,所以不能像下面這樣獲取查詢值:

user = User.findOne()

console.log(user.get('firstName'));

user是一個(gè)promise對(duì)象而不是

2.?Sequelize類

2.1?new Sequelize()?- 實(shí)例化

new Sequelize(database, [username=null], [password=null], [options={}])

require引用后淮摔,會(huì)指向Sequelize的主類的構(gòu)造函數(shù)私沮,引用后就可以通過(guò)new關(guān)鍵字進(jìn)行實(shí)例化,實(shí)例化后就會(huì)以連接池的形式連接到所使用的數(shù)據(jù)庫(kù)和橙。語(yǔ)法結(jié)構(gòu)如下:

var Sequelize = require('sequelize');

var sequelize = new Sequelize(database, [username=null], [password=null], [options={}])

實(shí)例化Sequelize時(shí)仔燕,需要傳入數(shù)據(jù)庫(kù)名、用戶名和密碼魔招,還可以傳入一個(gè)可選的options參數(shù)對(duì)象晰搀。

實(shí)例化參數(shù)

名稱類型說(shuō)明

databaseString數(shù)據(jù)庫(kù)名

[username=null]String數(shù)據(jù)庫(kù)用戶名

[password=null]String數(shù)據(jù)庫(kù)密碼

[options={}]Object參數(shù)對(duì)象

[options.dialect='mysql']String要連接的數(shù)據(jù)庫(kù)類型“彀撸可選值有:mysql厕隧、postgres、sqlite俄周、mariadb吁讨、mssql

[options.dialectModulePath=null]String指定后,將通過(guò)此路徑模塊加載數(shù)據(jù)庫(kù)

[options.dialectOptions]Object路徑模塊所使用的擴(kuò)展選項(xiàng)

[options.storage]String僅用于sqlite峦朗, 默認(rèn)為':memory:'

[options.host='localhost']String連接數(shù)據(jù)庫(kù)的主機(jī)

[options.port=]String連接數(shù)據(jù)庫(kù)的端口

[options.protocol='tcp']String連接數(shù)據(jù)庫(kù)使用的協(xié)議

[options.define={}]Object定義模型的選項(xiàng)建丧,默認(rèn)為'sequelize.define'選項(xiàng)

[options.query={}]Object'sequelize.query'的默認(rèn)選項(xiàng)

[options.set={}]Object'sequelize.set'的默認(rèn)選項(xiàng)

[options.sync={}]Object'sequelize.sync'的默認(rèn)選項(xiàng)

[options.timezone='+00:00']String時(shí)間轉(zhuǎn)換時(shí)從數(shù)據(jù)庫(kù)得到的JavaScript時(shí)間。這個(gè)時(shí)區(qū)將應(yīng)用于連接服務(wù)器的 NOW波势、CURRENT_TIMESTAMP或其它日期函數(shù)

[options.logging=console.log]Function用于Sequelize日志打印的函數(shù)

[options.omitNull=false]Booleannull值是否通過(guò)SQL查詢

[options.native=false]Boolean是否使用本地庫(kù)翎朱,僅用于 postgres

[options.replication=false]Boolean是否使用讀/寫復(fù)制(讀寫分離)。

要啟用讀/寫復(fù)制尺铣,需要傳遞一個(gè)對(duì)象拴曲,這個(gè)對(duì)象有read、write兩個(gè)屬性凛忿。write是一個(gè)單一的對(duì)象(由單臺(tái)服務(wù)器處理寫入)澈灼,而read是一個(gè)包含對(duì)象的數(shù)組(由多臺(tái)服務(wù)器處理讀取)。每臺(tái)read店溢、write服務(wù)器都可以包含以下屬性:host叁熔、port、username床牧、password荣回、database。?

讀寫分離的使用請(qǐng)參考:Sequelize 實(shí)現(xiàn)數(shù)據(jù)庫(kù)讀寫分離

[options.pool={}]Object使用連接池連接戈咳,默認(rèn)為true

[options.pool.maxConnections]Integer

[options.pool.minConnections]Integer

[options.pool.maxIdleTime]Integer連接最大空置時(shí)間(毫秒)心软,超時(shí)后將釋放連接

[options.pool.validateConnection]Function連接驗(yàn)證函數(shù)

[options.quoteIdentifiers=true]Boolean設(shè)置為false時(shí)Postgres中會(huì)使表名和屬性大小寫不敏感,并跳過(guò)雙引號(hào)

[options.transactionType='DEFERRED']String設(shè)置事務(wù)類型著蛙,詳見(jiàn)Sequelize.Transaction.TYPES删铃。僅Sqlite適用

[options.isolationLevel='REPEATABLE_READ']String設(shè)置事件的隔離級(jí)別,詳見(jiàn)Sequelize.Transaction.ISOLATION_LEVELS

[options.retry]Object設(shè)置自動(dòng)查詢時(shí)的重試標(biāo)志

[options.retry.match]Array匹配到指定的錯(cuò)誤字符串之一后重試查詢

[options.retry.max]Integer設(shè)置重試次數(shù)

[options.typeValidation=false]Boolean在插入册踩、更新等操作時(shí)執(zhí)行類型驗(yàn)證

[options.benchmark=false]Boolean在打印執(zhí)行的SQL日志時(shí)輸出執(zhí)行時(shí)間(毫秒)

Sequelize實(shí)例化示例

// 不使用密碼和選項(xiàng)

var sequelize = new Sequelize('database', 'username')

// 不使用選項(xiàng)

var sequelize = new Sequelize('database', 'username', 'password')

// 不使用密碼/空密碼

var sequelize = new Sequelize('database', 'username', null, {})

// 使用密碼和選項(xiàng)

var sequelize = new Sequelize('my_database', 'john', 'doe', {})

Sequelize實(shí)例化(初始化)有以上幾種形式泳姐,通過(guò)構(gòu)造函數(shù)實(shí)例化后,就可以通過(guò)其返回的sequelize實(shí)例定義Model暂吉、執(zhí)行query查詢胖秒、執(zhí)行transaction等。

2.2?new Sequelize()?- 通過(guò)URI實(shí)例化

new Sequelize(uri, [options={}])

Sequelize可以通過(guò)一個(gè)URI進(jìn)行實(shí)例化:

// 使用Uri連接

var sequelize = new Sequelize('mysql://localhost:3306/database', {})

2.3?sequelize.models?- 實(shí)例中已定義的模型

sequelize.models

該實(shí)例屬性用于返回通過(guò)sequelize.define定義的所有模型對(duì)象

sequelize.models;

// 返回值如下

{ User: User,

? UserRole: UserRole,

? …… }

2.4?sequelize.define()?- 模型定義

sequelize.define(modelName, attributes, [options]) -> Modal

這個(gè)實(shí)例方法用于定義一個(gè)新Model(模型)慕的。Model相當(dāng)于數(shù)據(jù)庫(kù)中的表阎肝,該對(duì)象不能通過(guò)構(gòu)造函數(shù)實(shí)例化,而只能通過(guò)sequelize.define()或sequelize.import()方法創(chuàng)建肮街。

表中的字段通過(guò)第二個(gè)參數(shù)對(duì)象attributes來(lái)定義风题,對(duì)象中的一個(gè)屬性相當(dāng)于表中的一個(gè)字段。

如,可以像下面這樣定義一個(gè)表:

sequelize.define('modelName', {

? ? columnA: {

? ? ? ? type: Sequelize.BOOLEAN,

? ? ? ? validate: {

? ? ? ? ? is: ["[a-z]",'i'],? ? ? ? // will only allow letters

? ? ? ? ? max: 23,? ? ? ? ? ? ? ? ? // only allow values <= 23

? ? ? ? ? isIn: {

? ? ? ? ? ? args: [['en', 'zh']],

? ? ? ? ? ? msg: "Must be English or Chinese"

? ? ? ? ? }

? ? ? ? },

? ? ? ? field: 'column_a'

? ? ? ? // Other attributes here

? ? },

? ? columnB: Sequelize.STRING,

? ? columnC: 'MY VERY OWN COLUMN TYPE'

})

sequelize.models.modelName // The model will now be available in models under the name given to define

2.5?Sequelize?- 頂級(jí)對(duì)象

var Sequelize = require('sequelize');

Sequelize是一個(gè)指向sequelize模塊頂級(jí)對(duì)象引用沛硅,同時(shí)也是一個(gè)構(gòu)造函數(shù)眼刃。可以通過(guò)該構(gòu)造函數(shù)進(jìn)行Sequelize類的實(shí)例化摇肌;也可以通過(guò)該對(duì)象來(lái)訪問(wèn)模塊中子對(duì)象擂红,如:DataTypes、Errors围小、Transactions等昵骤。

2.6?Utils?- 工具類

Sequelize.Utils

一個(gè)指定sequelize中工具類的引用,大多數(shù)情況下需要直接引用該對(duì)象肯适,如:可以使用Sequelize.Utils._屬性变秦,該屬性是一個(gè)指向lodash庫(kù)的引用,如果你項(xiàng)目中沒(méi)有另外引用該庫(kù)就可以通過(guò)該屬性來(lái)調(diào)用框舔。

2.7?Promise?- Promise對(duì)象

Sequelize.Promise

該屬性是一個(gè)指向bluebirdPromise類型的引用蹦玫。

2.8?QueryTypes?- 查詢類型枚舉

Sequelize.QueryTypes

用于sequelize.query的表示查詢類型的枚舉對(duì)象∮杲龋可用類型如下:

module.exports = {

? SELECT: 'SELECT',

? INSERT: 'INSERT',

? UPDATE: 'UPDATE',

? BULKUPDATE: 'BULKUPDATE',

? BULKDELETE: 'BULKDELETE',

? DELETE: 'DELETE',

? UPSERT: 'UPSERT',

? VERSION: 'VERSION',

? SHOWTABLES: 'SHOWTABLES',

? SHOWINDEXES: 'SHOWINDEXES',

? DESCRIBE: 'DESCRIBE',

? RAW: 'RAW',

? FOREIGNKEYS: 'FOREIGNKEYS',

};

2.9?Validator?-?validator.js對(duì)象

Sequelize.Validator

一個(gè)指定validator.js對(duì)象的引用钳垮,該對(duì)象用于Sequelize內(nèi)部的驗(yàn)證,如:非常额港、URL饺窿、IP等,也可以通過(guò)該屬性進(jìn)行一些自定義驗(yàn)證移斩。

2.10?Transaction?- 事務(wù)對(duì)象

Sequelize.Transaction

該屬性是一個(gè)指向SequelizeTransaction類的引用肚医,要以使用這個(gè)屬性來(lái)訪問(wèn)創(chuàng)建事務(wù)的隔離級(jí)別和事務(wù)類型等。

2.11?Deferrable?- 延時(shí)對(duì)象

Sequelize.Deferrable

指向一個(gè)延時(shí)集合的引用向瓷,通過(guò)個(gè)屬必可以訪問(wèn)不通的延時(shí)選項(xiàng)肠套。

2.12?Instance?- 實(shí)例對(duì)象

Sequelize.Instance

一個(gè)指定Sequelize實(shí)例類的引用。

2.13?Association?- 聯(lián)合關(guān)系對(duì)象

Sequelize.Association

一個(gè)指定Association類的引用猖任。

2.14?Error?- 錯(cuò)誤對(duì)象

Sequelize.Error

Sequelize中生成錯(cuò)誤的類

2.15?ValidationError?- 驗(yàn)證失敗錯(cuò)誤對(duì)象

Sequelize.ValidationError

驗(yàn)證失敗時(shí)會(huì)生成此對(duì)象

2.16?DatabaseError?- 數(shù)據(jù)庫(kù)錯(cuò)誤對(duì)象

Sequelize.DatabaseError

驗(yàn)證失敗時(shí)會(huì)生成此對(duì)象

指向一個(gè)所有數(shù)據(jù)庫(kù)相關(guān)錯(cuò)誤的類

2.17?TimeoutError?- 查詢超時(shí)錯(cuò)誤對(duì)象

Sequelize.TimeoutError

當(dāng)數(shù)據(jù)庫(kù)查詢超時(shí)時(shí)會(huì)生成TimeoutError對(duì)象你稚。

2.18?UniqueConstraintError?- 唯一性錯(cuò)誤對(duì)象

Sequelize.UniqueConstraintError

當(dāng)數(shù)違反唯一約束時(shí)會(huì)生成UniqueConstraintError對(duì)象。

2.19?ExclusionConstraintError?- 排出約束錯(cuò)誤對(duì)象

Sequelize.ExclusionConstraintError

在數(shù)據(jù)庫(kù)中違反排除約束時(shí)觸發(fā)此錯(cuò)誤朱躺。

2.20?ForeignKeyConstraintError?- 外鍵約束錯(cuò)誤對(duì)象

Sequelize.ForeignKeyConstraintError

在數(shù)據(jù)庫(kù)中違反外鍵約束時(shí)觸發(fā)此錯(cuò)誤刁赖。

2.21?ConnectionError?- 連接錯(cuò)誤對(duì)象

Sequelize.ConnectionError

一個(gè)指向數(shù)據(jù)庫(kù)連接錯(cuò)誤時(shí)觸發(fā)的錯(cuò)誤對(duì)象。

2.22?ConnectionRefusedError?- 連接拒絕錯(cuò)誤對(duì)象

Sequelize.ConnectionRefusedError

一個(gè)指向數(shù)據(jù)庫(kù)連接被拒絕時(shí)觸發(fā)的錯(cuò)誤對(duì)象长搀。

2.23?AccessDeniedError?- 無(wú)訪問(wèn)權(quán)限錯(cuò)誤對(duì)象

Sequelize.AccessDeniedError

連接到數(shù)據(jù)庫(kù)但沒(méi)有訪問(wèn)權(quán)限時(shí)會(huì)觸發(fā)此錯(cuò)誤宇弛。

2.24?HostNotFoundError?- 主機(jī)未找到錯(cuò)誤對(duì)象

Sequelize.HostNotFoundError

連接數(shù)據(jù)但主機(jī)名(IP或URI)未找到時(shí)會(huì)觸發(fā)這個(gè)錯(cuò)誤對(duì)象。

2.25?InvalidConnectionError?- 無(wú)效鏈接錯(cuò)誤對(duì)象

Sequelize.InvalidConnectionError

連接到數(shù)據(jù)庫(kù)但其中的任意參數(shù)出現(xiàn)錯(cuò)誤時(shí)會(huì)觸發(fā)這個(gè)錯(cuò)誤對(duì)象源请。

2.26?ConnectionTimedOutError?- 鏈接超時(shí)錯(cuò)誤對(duì)象

Sequelize.ConnectionTimedOutError

連接數(shù)據(jù)庫(kù)超時(shí)時(shí)會(huì)觸發(fā)這個(gè)錯(cuò)誤對(duì)象枪芒。

2.27?InstanceError?- 實(shí)例錯(cuò)誤對(duì)象

Sequelize.InstanceError

當(dāng)任何實(shí)例方法出現(xiàn)問(wèn)題時(shí)會(huì)觸發(fā)這個(gè)錯(cuò)誤對(duì)象。

2.28?sequelize.getDialect()?- 返回?cái)?shù)據(jù)庫(kù)類型

sequelize.getDialect()

該實(shí)例方法用于返回實(shí)例類型(數(shù)據(jù)庫(kù)類型)

2.29?sequelize.getQueryInterface()?- 返回QueryInterface實(shí)例

sequelize.getQueryInterface()

返回QueryInterface的實(shí)例

詳見(jiàn):queryInterface對(duì)象及功能

2.30?sequelize.define()?- 模型定義

define(modelName, attributes, [options]) -> Model

定義一個(gè)模型舅踪,該模型是一個(gè)建立了與數(shù)據(jù)表關(guān)系的對(duì)象

被定義的表中的列在該方法的第二個(gè)參數(shù)中定義纽甘,可以理解為每個(gè)屬性對(duì)應(yīng)一個(gè)表的字段:

sequelize.define('modelName', {

? ? columnA: {

? ? ? ? type: Sequelize.BOOLEAN,

? ? ? ? validate: {

? ? ? ? ? is: ["[a-z]",'i'],? ? ? ? // will only allow letters

? ? ? ? ? max: 23,? ? ? ? ? ? ? ? ? // only allow values <= 23

? ? ? ? ? isIn: {

? ? ? ? ? ? args: [['en', 'zh']],

? ? ? ? ? ? msg: "Must be English or Chinese"

? ? ? ? ? }

? ? ? ? },

? ? ? ? field: 'column_a'

? ? ? ? // Other attributes here

? ? },

? ? columnB: Sequelize.STRING,

? ? columnC: 'MY VERY OWN COLUMN TYPE'

})

sequelize.models.modelName // The model will now be available in models under the name given to define

如上所示,列的定義可以是字符串硫朦、一個(gè)預(yù)定義的Sequelize構(gòu)造函數(shù)贷腕、或是一個(gè)對(duì)象。在定義列時(shí)咬展,我們可以指定數(shù)據(jù)類型,也可以指定默認(rèn)值瞒斩、主鍵/外鍵等約束破婆,還可以自定義訪問(wèn)器(getter)和設(shè)置器(setter)。

參數(shù)

名稱類型說(shuō)明

modelNameString模型名胸囱,在sequelize.models屬性中會(huì)使用這個(gè)名稱祷舀;如果沒(méi)有在options中指定表名,數(shù)據(jù)庫(kù)中也會(huì)使用此屬性做為表名烹笔。

attributesObject一個(gè)對(duì)象裳扯,其每個(gè)屬性對(duì)應(yīng)表中的一個(gè)列,每個(gè)列可以使用一個(gè)預(yù)定義的DataType谤职、字符串或類型描述對(duì)象定義:

attributes.columnString | DataType | Object數(shù)據(jù)庫(kù)中的列描述

attributes.column.typeString | DataTypeDataType或字符串饰豺,表示列的數(shù)據(jù)類型

[attributes.column

.allowNull=true]

Boolean設(shè)置為false時(shí),會(huì)給添加NOT NULL(非空)約束允蜈,數(shù)據(jù)保存時(shí)會(huì)進(jìn)行非空驗(yàn)證

[attributes.column

.defaultValue=null]

Any字面默認(rèn)值, JavaScript函數(shù), 或一個(gè) SQL 函數(shù) (查看?sequelize.fn)

[attributes.column

.unique=false]

String | Boolean設(shè)置為true時(shí)冤吨,會(huì)為列添加唯一約束

[attributes.column

.primaryKey=false]

Boolean指定是否是主鍵

[attributes.column

.field=null]

String設(shè)置在數(shù)據(jù)庫(kù)中的字段名。設(shè)置后會(huì)饶套,Sequelize會(huì)將屬性名映射到數(shù)據(jù)庫(kù)中的不同名稱

[attributes.column

.autoIncrement=false]

Boolean是否自增

[attributes.column

.comment=null]

String字段描述(自1.7+后漩蟆,此描述不再添加到數(shù)據(jù)庫(kù)中)

[attributes.column

.references=null]

String | Model引用對(duì)象

[attributes.column

.references.model]

String | Model如果列引用到另一個(gè)表,可以通過(guò)這個(gè)屬性設(shè)置模型或字符串妓蛮。

[attributes.column

.references.key='id']

String該列表示到表外鍵列的引用

[attributes.column.onUpdate]String當(dāng)被引用的鍵更新時(shí)的操作怠李,可選值是:CASCADE, RESTRICT, SET DEFAULT, SET NULL 或 NO ACTION 之一

[attributes.column.onDelete]String當(dāng)被引用的鍵刪除時(shí)的操作,可選值是:CASCADE, RESTRICT, SET DEFAULT, SET NULL 或 NO ACTION 之一

[attributes.column.get]Function為列自定義一個(gè)訪問(wèn)器蛤克。使用this.getDataValue(String)時(shí)調(diào)用的值

[attributes.column.set]Function為列自定義一個(gè)設(shè)置器捺癞。使用this.setDataValue(String, Value)時(shí)調(diào)用的值

[attributes.validate]Object模型每次保存時(shí)調(diào)用的驗(yàn)證對(duì)象】г牛可是validator.js中的驗(yàn)證函數(shù)(參見(jiàn)?DAOValidator)翘簇、或自定義的驗(yàn)證函數(shù)。

[options]Object提供給Sequelize 構(gòu)造函數(shù)的一些默認(rèn)值

[options.defaultScope={}]Object定義使用此模型的默認(rèn)搜索范圍儿倒。作用范圍與提供給 find / findAll 的選項(xiàng)形式相同

[options.scopes]Object更多范圍版保,定義 defaultScope 的定義形式相同呜笑。關(guān)于限制范圍的定義請(qǐng)參考Model.scope

[options.omitNull]Boolean是否忽略空值,這意味著彻犁,所有列的空值將不會(huì)被保存

[options.timestamps=true]Boolean為模型添加 createdAt 和 updatedAt 兩個(gè)時(shí)間戳字段

[options.paranoid=false]Boolean使用邏輯刪除叫胁。設(shè)置為true后,調(diào)用?destroy?方法時(shí)將不會(huì)刪隊(duì)模型汞幢,而是設(shè)置一個(gè)?deletedAt?列驼鹅。此設(shè)置需要?timestamps=true

[options.underscored=false]Boolean轉(zhuǎn)換列名的駝峰命名規(guī)則為下劃線命令規(guī)則

[options.underscoredAll=false]Boolean轉(zhuǎn)換模型名的駝峰命名規(guī)則為表名的下劃線命令規(guī)則

[options.freezeTableName=false]Boolean設(shè)置為true時(shí),sequelize不會(huì)改變表名森篷,否則可能會(huì)按其規(guī)則有所調(diào)整

[options.name]Object允有singular?和?plural兩個(gè)屬性的對(duì)象输钩,在模型與其它模型關(guān)聯(lián)時(shí)使用

[options.name.singular=

inflection.singularize(modelName)]

String

[options.name.plural=

inflection.pluralize(modelName)]

String

[options.indexes]Array.<Object>要建立的索引

[options.indexes[].name]String索引名,默認(rèn)為模型名 + '_' + 字段名

[options.indexes[].type]String索引類型仲智,僅用于 mysql买乃,其值為:UNIQUE、?FULLTEXT?或?SPATIAL之一

[options.indexes[].method]String創(chuàng)建索引的方法(SQL中的USING?聲明)钓辆。BTREE 或 HASH 可以在 mysql 和 postgres中支持剪验,postgres中支持,還支持 GIST 和 GIN

[options.indexes[].unique=false]Boolean設(shè)置索引是否唯一前联,設(shè)置后會(huì)自動(dòng)觸發(fā)UNIQUE設(shè)置

[options.indexes[]

.concurrently=false]

BooleanPostgreSQL 中在創(chuàng)建索引時(shí)不使用任務(wù)寫鎖定功戚。僅 Postgres 適用

[options.indexes[].fields]Array.<String | Object>建立索引的字段數(shù)組。每個(gè)字段可以是一個(gè)字段名似嗤,sequelize 對(duì)象 (如?sequelize.fn)啸臀,

或一個(gè)包含:attribute?(字段名)、length?(創(chuàng)建前綴字符數(shù))双谆、order?(列排序方向)壳咕、collate?(較驗(yàn)的字段集合 (排序))

[options.createdAt]String | Boolean如果為字符串,則使用提供的值代替 createdAt 列的默認(rèn)名顽馋,設(shè)置為flase則不添加這個(gè)字段谓厘。

[options.updatedAt]String | Boolean如果為字符串,則使用提供的值代替 updatedAt 列的默認(rèn)名寸谜,設(shè)置為flase則不添加這個(gè)字段

[options.deletedAt]String | Boolean如果為字符串竟稳,則使用提供的值代替 deletedAt 列的默認(rèn)名,設(shè)置為flase則不添加這個(gè)字段

[options.tableName]String模型所對(duì)應(yīng)表的表名熊痴,設(shè)置freezeTableName 為 true時(shí)他爸,才會(huì)嚴(yán)格使用模型名

[options.getterMethods]Object提供給 getter 調(diào)用的方法,與每列定義的訪問(wèn)器一樣果善。如果為列定義了一個(gè)相同名稱的 getter 方法诊笤,那么會(huì)通過(guò)這個(gè)方法獲取值;如果未定義的名稱與列不匹配巾陕,這將做為一個(gè)虛擬訪問(wèn)器讨跟;也用于設(shè)置多個(gè)值纪他,但不能用在。

[options.setterMethods]Object提供給 setter 調(diào)用的方法晾匠,與每列定義的設(shè)置器一樣茶袒。如果為列定義了一個(gè)相同名稱的 setter 方法,那么會(huì)通過(guò)這個(gè)方法設(shè)置值凉馆;如果未定義的名稱與列不匹配薪寓,這將做為一個(gè)虛擬訪設(shè)置;也用于匹配多個(gè)值澜共,但不用于邏輯刪除向叉。

[options.instanceMethods]Object提供給每個(gè)實(shí)例(DAO)的方法。如果通過(guò)sequelize對(duì)方法進(jìn)行了重寫咳胃,可以通過(guò)"this.constructor.super_.prototype"來(lái)調(diào)用原方法植康,如:this.constructor.super_.prototype.toJSON.apply(this, arguments)

[options.classMethods]Object添加到Model的類方法,如果通過(guò)sequelize對(duì)方法進(jìn)行了重寫展懈,可以通過(guò)?this.constructor.prototype來(lái)調(diào)用原方法,如:this.constructor.prototype.find.apply(this, arguments)

[options.schema='public']String

[options.engine]String

[options.charset]String

[options.comment]String

[options.collate]String

[options.initialAutoIncrement]StringMySQL中設(shè)置 AUTO_INCREMENT (自增)的初始值

[options.hooks]Object一個(gè)包含鉤子函數(shù)的對(duì)象供璧,這些函數(shù)會(huì)在生生命周期內(nèi)某些事件發(fā)生之前或之后被調(diào)用存崖。可添加的鉤子函數(shù)有:beforeValidate, afterValidate, beforeBulkCreate, beforeBulkDestroy, beforeBulkUpdate, beforeCreate, beforeDestroy, beforeUpdate, afterCreate, afterDestroy, afterUpdate, afterBulkCreate, afterBulkDestory 和 afterBulkUpdate睡毒。每個(gè)屬性可以是一個(gè)函數(shù)来惧,或是一個(gè)包含一組函數(shù)的數(shù)組。

[options.validate]Object模型廣泛驗(yàn)證對(duì)象演顾。該驗(yàn)證會(huì)通過(guò)this供搀。如果驗(yàn)證函數(shù)中有參數(shù),則會(huì)被認(rèn)為是異步的钠至,并通過(guò)一個(gè)包含可選錯(cuò)誤的回調(diào)函數(shù)形式的的調(diào)葛虐。

2.31?sequelize.model()?- 獲取模型

sequelize.model(modelName]) -> Model

獲取一個(gè)已經(jīng)定義的模型。modelName表示通過(guò)sequelize.define定義的模型名棉钧。

2.32?sequelize.isDefined()?- 檢查模型是否定義

sequelize.isDefined(modelName) -> Boolean

檢查模型是否已經(jīng)定義屿脐。modelName表示通過(guò)sequelize.define定義的模型名。

2.33?sequelize.import()?- 模型導(dǎo)入

sequelize.import(path) -> Model

通過(guò)文件導(dǎo)入模型定義宪卿。檢查模型是否已經(jīng)定義的诵。

被導(dǎo)入的模型會(huì)被緩存,所以多次導(dǎo)入并不會(huì)重復(fù)加載

path表示要導(dǎo)入文件的路徑佑钾,如果使用相對(duì)路徑會(huì)自動(dòng)轉(zhuǎn)換為絕對(duì)路徑西疤。

2.34?sequelize.query()?- 執(zhí)行查詢

sequelize.query(sql, [options={}]) -> Promise

執(zhí)行原始SQL 語(yǔ)句進(jìn)行查詢

默認(rèn)情況下,返回值中有兩個(gè)參數(shù):一個(gè)包含結(jié)果的數(shù)組休溶,一個(gè)元數(shù)據(jù)對(duì)象代赁∪潘可以通過(guò).spread方法來(lái)查看結(jié)果。

如果不想使用原始查詢結(jié)果管跺,可以第二個(gè)可選參數(shù)中傳一個(gè)type參數(shù)义黎,并指定查詢的類型。設(shè)置后豁跑,sequelize會(huì)對(duì)結(jié)果進(jìn)行格式化:

sequelize.query('SELECT...').spread(function (results, metadata) {

? // Raw query - use spread

});

sequelize.query('SELECT...', { type: sequelize.QueryTypes.SELECT }).then(function (results) {

? // SELECT query - use then

})

參數(shù)

名稱類型說(shuō)明

sqlString

[options={}]Object查詢選項(xiàng)

[options.raw]Boolean設(shè)置為true時(shí)廉涕,sequelize 不會(huì)查詢結(jié)果進(jìn)行格式化,或不會(huì)根據(jù)結(jié)果構(gòu)建實(shí)例

[options.transaction=null]Transaction為查詢指定事務(wù)

[options.type='RAW']String執(zhí)行的查詢類型艇拍,sequelize會(huì)根據(jù)這個(gè)類型對(duì)返回結(jié)果格式化狐蜕。可以設(shè)置為一個(gè)字符串卸夕,或是通過(guò)Sequelize.QueryTypes來(lái)設(shè)置

[options.nest=false]Boolean設(shè)置為true层释,會(huì)使用dottie.js庫(kù),轉(zhuǎn)換通過(guò).設(shè)置的對(duì)象層級(jí)關(guān)系快集。如:{ 'user.username': 'john' }?會(huì)被轉(zhuǎn)換為?{ user: { username: 'john' }}贡羔。設(shè)置true后,查詢類型如未明確指定个初,則使用'SELECT'

[options.plain=false]Boolean設(shè)置查詢類型為?SELECT?并返回單行結(jié)果

[options.replacements]Object | Array替換:param格式的查詢參數(shù)對(duì)象乖寒,或用于替換SQL中?符號(hào)的參數(shù)數(shù)組

[options.bind]Object | Array$param格式綁定參數(shù)的對(duì)象,或未命令綁定參數(shù)數(shù)組院溺,會(huì)替換SQL中的$1, $2, ...

[options.useMaster=false]Boolean強(qiáng)制查詢使用寫池楣嘁,而不管查詢類型

[options.logging=false]Function一個(gè)用打印執(zhí)行的SQL語(yǔ)句的函數(shù)

[options.instance]Instance用于sequelize 實(shí)例,用于從查詢結(jié)果中構(gòu)建實(shí)例

[options.model]Model用于sequelize 模型珍逸,用于從查詢結(jié)果中構(gòu)建實(shí)例

[options.retry]Object設(shè)置自動(dòng)重試的控制標(biāo)識(shí)對(duì)象

[options.retry.match]Array發(fā)生錯(cuò)誤時(shí)逐虚,匹配到數(shù)組中的標(biāo)識(shí)后自動(dòng)重試

[options.retry.max]Integer設(shè)置最大重試次數(shù)

[options.searchPath=DEFAULT]String一個(gè)用于指定 schema 的 search_path 的可選項(xiàng)(僅 Postgres 適用)

[options.supportsSearchPath]Boolean是否使用 searchPath (僅 Postgres 適用)

[options.mapToModel=false]Object字段到模型的映射關(guān)系,當(dāng)提供options.model?或?options.instance時(shí)谆膳。映射會(huì)在建立模型實(shí)例之前進(jìn)行

[options.fieldMap]Object當(dāng)為?SELECT查詢時(shí)叭爱,映射字段與屬性名

2.35?sequelize.set()?- 設(shè)置變量

sequelize.set(variables, options) -> Promise

設(shè)置一個(gè)變量檐春,設(shè)置后將會(huì)執(zhí)行基于環(huán)境變量或用戶變量的查詢牧抽。此變量會(huì)在每次建立連接時(shí)設(shè)置纯续,僅MySQL 適用尊残。

名稱類型說(shuō)明

variablesObject包含多個(gè)變量的對(duì)象

optionsObject查詢選項(xiàng)

options.transactionTransaction是否在事務(wù)中執(zhí)行查詢

2.36?sequelize.escape()?- 編碼

sequelize.escape(value) -> String

對(duì)值value進(jìn)行編碼并返回編碼結(jié)果稍坯。

2.37?sequelize.createSchema()?- 創(chuàng)建數(shù)據(jù)庫(kù) schema

sequelize.createSchema(schema, options={}) -> Promise

創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù) schema

參數(shù)

名稱類型說(shuō)明

schemaStringschema 名

optionsObject選項(xiàng)

options.loggingBoolean | function日志打印函數(shù)

2.38?sequelize.showAllSchemas()?- 查詢已定義的schema

sequelize.showAllSchemas(options={}) -> Promise

查詢數(shù)據(jù)庫(kù)中已定義的schema

參數(shù)

名稱類型說(shuō)明

optionsObject選項(xiàng)

options.loggingBoolean | function日志打印函數(shù)

2.39?sequelize.dropSchema()?- 刪除定義的schema

sequelize.dropSchema(schema, options={}) -> Promise

刪除數(shù)據(jù)庫(kù)中已定義指定名稱的schema

參數(shù)

名稱類型說(shuō)明

schemaStringschema 名

optionsObject選項(xiàng)

options.loggingBoolean | function日志打印函數(shù)

2.40?sequelize.dropAllSchemas()?- 刪除所有schema

sequelize.dropAllSchemas(options={}) -> Promise

刪除數(shù)據(jù)庫(kù)中所有已定義的schema

參數(shù)

名稱類型說(shuō)明

optionsObject選項(xiàng)

options.loggingBoolean | function日志打印函數(shù)

2.41?sequelize.sync()?- 同步模型到數(shù)據(jù)庫(kù)

sequelize.sync([options={}]) -> Promise

同步所有已定義的模型到數(shù)據(jù)庫(kù)中

參數(shù)

名稱類型說(shuō)明

[options={}]Object

[options.force=false]Boolean設(shè)置為 true腹暖,會(huì)在創(chuàng)建表前先刪除原表劣领,即:DROP TABLE IF EXISTS ...

[options.match]RegEx添加匹配規(guī)則婿奔,只重建匹配的表睦尽,在force: true時(shí)非常有用

[options.logging=console.log]Boolean | function執(zhí)行SQL的日志打印函數(shù)

[options.schema='public']String創(chuàng)建表的 schema 器净。這一選項(xiàng)可以每個(gè)表的?sequelize.define中重寫

[options.searchPath=DEFAULT]String一個(gè)用于指定 schema 的 search_path 的可選項(xiàng)(僅 Postgres 適用)

[options.hooks=true]Boolean設(shè)置為true時(shí),會(huì)調(diào)用同步相關(guān)的鉤子函數(shù):beforeSync当凡、afterSync山害、beforBulkSync纠俭、afterBulkSync

2.42?sequelize.truncate()?- 截?cái)嘁讯x的表

sequelize.truncate([options]) -> Promise

截?cái)嗨幸讯x的模型所對(duì)應(yīng)的表,這個(gè)操作實(shí)際上是調(diào)用每個(gè)模型的Model.truncate()方法

參數(shù)

名稱類型說(shuō)明

optionsObject選項(xiàng)

options.transactionBoolean | function

options.loggingBoolean | function日志打印函數(shù)

2.43?sequelize.drop()?- 刪除表

sequelize.drop(options) -> Promise

刪除所有已定義的模型所對(duì)應(yīng)的表浪慌,這個(gè)操作實(shí)際上是調(diào)用每個(gè)模型的Model.drop()方法

參數(shù)

名稱類型說(shuō)明

optionsObject選項(xiàng)

options.loggingBoolean | function日志打印函數(shù)

2.44?sequelize.authenticate()?- 驗(yàn)證連接

sequelize.authenticate() -> Promise

驗(yàn)證已建立的連接

別名:validate

2.45?sequelize.fn()?- 函數(shù)調(diào)用

sequelize.fn(fn, args) -> Sequelize.fn

創(chuàng)建于一個(gè)相當(dāng)于數(shù)據(jù)庫(kù)函數(shù)的對(duì)象冤荆。該函數(shù)可用于搜索查詢的where和order部分,以及做為列定義的默認(rèn)值权纤。如果想在列中引用你定義的函數(shù)钓简,就要使用sequelize.col,這樣列就能正確的解析汹想,而不是解析為字符串外邓。

如,將username字段值解析為大寫形式:

instance.updateAttributes({

? username: self.sequelize.fn('upper', self.sequelize.col('username'))

})

名稱類型說(shuō)明

fnString要調(diào)用的函數(shù)

argsany傳遞給調(diào)用函數(shù)的參數(shù)

2.46?sequelize.col()?- 列對(duì)象

col(col) -> Sequelize.col

創(chuàng)建一個(gè)相當(dāng)于數(shù)據(jù)庫(kù)列的對(duì)象古掏。這個(gè)方法經(jīng)常結(jié)合sequelize.fn使用损话,它可以保證將列名正確的傳遞給該方法,而不是經(jīng)過(guò)轉(zhuǎn)義槽唾。

col-表示列名

2.47?sequelize.cast()?- cast函數(shù)

cast(val, type) -> Sequelize.cast

創(chuàng)建一個(gè)表示cast函數(shù)調(diào)用的對(duì)象

val-{any}丧枪,cast的值

type-{String},cast類型

2.48?sequelize.literal()?- 字面量對(duì)象

literal(val) -> Sequelize.literal

創(chuàng)建一個(gè)字面量對(duì)象庞萍,該值不會(huì)轉(zhuǎn)義

別名:asIs

更多關(guān)于sequelize.literal()的使用請(qǐng)參考:

字段值批量自增豪诲、自減

2.49?sequelize.and()?- AND查詢

and(args) -> Sequelize.and

AND查詢

val-{String | Object},會(huì)被AND連接的參數(shù)

2.50?sequelize.or()?- OR查詢

or(args) -> Sequelize.or

OR查詢

val-{String | Object}挂绰,會(huì)被OR連接的參數(shù)

2.51?sequelize.json()?- json嵌套對(duì)象

json(conditions, [value]) -> Sequelize.json

生成一個(gè)Postgre中json類型的嵌套對(duì)象

conditions-{String | Object},一個(gè)能夠被postgres json 語(yǔ)法解析以的嵌套對(duì)象

[value]-{String | Object}服赎,可選的比較值葵蒂,會(huì)生成 " = ''"

2.52?sequelize.where()?- 指定WHERE條件

json(conditions, [value]) -> Sequelize.json

指定屬性=條件。

屬性也可以從Model.rawAttributes對(duì)象獲戎芈恰(如:Model.rawAttributes.id践付、Model.rawAttributes.name)。屬性應(yīng)該已在模型中定義缺厉。也可以從sequelize工具函數(shù)中獲扔栏摺(如:sequelize.fn,、sequelize.col

當(dāng)使用字符串屬性是提针,用于{ where: { attr: something }}語(yǔ)法命爬。如果不希望屬性被轉(zhuǎn)義,請(qǐng)使用sequelize.literal辐脖。

attr-{Object}饲宛,屬性

[comparator='=']-{String}

logic-{String | Object},限制條件可以是簡(jiǎn)單字符串或進(jìn)一步的條件對(duì)象(如:$or艇抠、$and幕庐、.litera)

別名:condition

2.53?sequelize.transaction()?- 啟動(dòng)事務(wù)

sequlize.transaction([options={}]) -> Promise

啟動(dòng)一個(gè)事務(wù)。當(dāng)使用事務(wù)時(shí)家淤,需要將事務(wù)做為一個(gè)可選參數(shù)transaction傳入异剥,然后查詢就會(huì)在傳入的事務(wù)下執(zhí)行:

sequelize.transaction().then(function (t) {

? return User.find(..., { transaction: t}).then(function (user) {

? ? return user.updateAttributes(..., { transaction: t});

? })

? .then(t.commit.bind(t))

? .catch(t.rollback.bind(t));

})

事務(wù)支持自動(dòng)提交或回滾,當(dāng)使用promise鏈接調(diào)用時(shí)會(huì)自動(dòng)完成:

sequelize.transaction(function (t) {

? // 注意絮重,這時(shí)使用的是callback而不是promise.then()

? return User.find(..., { transaction: t}).then(function (user) {

? ? return user.updateAttributes(..., { transaction: t});

? });

}).then(function () {

? // Committed

}).catch(function (err) {

? // Rolled back

? console.error(err);

});

啟用CLS命名空間時(shí)冤寿,事務(wù)分被自動(dòng)掛載。

var cls = require('continuation-local-storage'),

? ? ns = cls.createNamespace('....');

var Sequelize = require('sequelize');

Sequelize.cls = ns;

相關(guān)

Transaction

參數(shù)

名稱類型說(shuō)明

[options={}]Object

[options.autocommit=true]Boolean是否自動(dòng)提交

[options.type='DEFERRED']String查看Sequelize.Transaction.TYPES绿鸣,僅 Sqlite 適用

[options.isolationLevel

='REPEATABLE_READ']

String事務(wù)的隔離級(jí)別疚沐,參見(jiàn)Sequelize.Transaction.ISOLATION_LEVELS

[options.logging=false]Function用于打印執(zhí)行SQL的函數(shù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市潮模,隨后出現(xiàn)的幾起案子亮蛔,更是在濱河造成了極大的恐慌,老刑警劉巖擎厢,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件究流,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡动遭,警方通過(guò)查閱死者的電腦和手機(jī)芬探,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)厘惦,“玉大人偷仿,你說(shuō)我怎么就攤上這事∠叮” “怎么了酝静?”我有些...
    開封第一講書人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)羡玛。 經(jīng)常有香客問(wèn)我别智,道長(zhǎng),這世上最難降的妖魔是什么稼稿? 我笑而不...
    開封第一講書人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任薄榛,我火速辦了婚禮,結(jié)果婚禮上让歼,老公的妹妹穿的比我還像新娘敞恋。我一直安慰自己,他們只是感情好是越,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開白布耳舅。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪浦徊。 梳的紋絲不亂的頭發(fā)上馏予,一...
    開封第一講書人閱讀 51,521評(píng)論 1 304
  • 那天,我揣著相機(jī)與錄音盔性,去河邊找鬼霞丧。 笑死,一個(gè)胖子當(dāng)著我的面吹牛冕香,可吹牛的內(nèi)容都是我干的蛹尝。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼悉尾,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼突那!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起构眯,我...
    開封第一講書人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤愕难,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后惫霸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體猫缭,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年壹店,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了猜丹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡硅卢,死狀恐怖射窒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情将塑,我是刑警寧澤轮洋,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站抬旺,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏祥楣。R本人自食惡果不足惜开财,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望误褪。 院中可真熱鬧责鳍,春花似錦、人聲如沸兽间。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至恤溶,卻和暖如春乓诽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背咒程。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工鸠天, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人帐姻。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓稠集,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親剥纷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容