Express-Cassandra 使用教程
项目介绍
Express-Cassandra 是一个为 Node.js 设计的 Cassandra ORM/ODM/OGM,支持 ScyllaDB、Datastax Enterprise、Elassandra 和 JanusGraph。它简化了与 Cassandra 或 ScyllaDB 数据库的交互,无需手动编写原始的 CQL 查询。Express-Cassandra 自动加载模型,并提供面向对象的映射,类似于标准的 ORM/ODM。
项目快速启动
安装
首先,通过 npm 安装 Express-Cassandra:
npm install express-cassandra
初始化
创建一个 models
目录,并在其中创建一个 PersonModel.js
文件:
// models/PersonModel.js
export default {
fields: {
name: "text",
surname: "text",
age: "int",
created: "timestamp"
},
key: ["name"]
}
配置和加载模型
在主文件中配置和加载模型:
const ExpressCassandra = require('express-cassandra');
const models = ExpressCassandra.createClient({
clientOptions: {
contactPoints: ['127.0.0.1'],
localDataCenter: 'datacenter1',
protocolOptions: { port: 9042 },
keyspace: 'mykeyspace',
queryOptions: { consistency: ExpressCassandra.consistencies.one },
socketOptions: { readTimeout: 60000 }
},
ormOptions: {
defaultReplicationStrategy: {
class: 'SimpleStrategy',
replication_factor: 1
},
migration: 'safe'
}
});
models.setDirectory(__dirname + '/models').bind(function(err) {
if (err) throw err;
const MyModel = models.instance.PersonModel;
MyModel.syncDB(function(err, result) {
if (err) throw err;
// 现在可以对 MyModel 进行操作
});
});
应用案例和最佳实践
插入数据
const person = new MyModel({
name: 'John',
surname: 'Doe',
age: 30,
created: new Date()
});
person.save(function(err) {
if (err) throw err;
console.log('Person saved');
});
查询数据
MyModel.findOne({ name: 'John' }, function(err, result) {
if (err) throw err;
console.log(result);
});
典型生态项目
Elassandra
Elassandra 是一个结合了 Cassandra 和 Elasticsearch 的项目,Express-Cassandra 提供了对 Elassandra 的支持,使得在 Cassandra 上进行全文搜索变得更加容易。
JanusGraph
JanusGraph 是一个图数据库,Express-Cassandra 也支持与 JanusGraph 的集成,使得在 Node.js 应用中使用图数据库变得更加便捷。
通过以上步骤,您可以快速启动并使用 Express-Cassandra 进行开发。希望这篇教程对您有所帮助!