TCG开发日志(4)Sequelize

用Sequelize的好处是Sequelize中的query是一个promise,可以用await调用,不用写非常复杂的回调结构。

那么首先还是安装:

npm install sequelize --save

npm install mysql --save

我在本机上用了wamp,可以在localhost/phpmyadmin中看到可视化的数据库。

首先在本地建立一个数据库tcgtest,之后在服务端连接它:

import Sequelize from ‘sequelize‘;

let sequelize = new Sequelize(‘tcgtest‘, ‘root‘, null, {
  host:‘127.0.0.1‘,
  dialect:‘mysql‘
})

其中root和null分别是账户名和密码,这是本地的默认值。

之后可以先新建一个表,这里用sequelize的model来定义:

var User = sequelize.define(‘user‘, {
  nick:{
    type:Sequelize.STRING
  },
  password:{
    type:Sequelize.STRING
  }
});

sync可以将定义好的所有model同步到数据库中,它有很多参数,参见http://itbilu.com/nodejs/npm/VkYIaRPz-.html

之后就可以方便的进行INSERT, UPDATE, SELECT等基础操作了:

注意:为了用await调用promise,必须把所有的query写在一个async 函数中。

(async ()=>{

  await sequelize.sync();

  await sequelize.query("INSERT INTO users (nick, password) VALUES (?, ?)", {
    type:sequelize.QueryTypes.INSERT,
    replacements: [‘foo‘, ‘bar‘]
  })

  let ret = await sequelize.query("SELECT * FROM users", {
    type:sequelize.QueryTypes.SELECT
  });

})();

可以用console.log(ret)查看结果,这里有个奇怪的地方,如果在query中不去指定事件的type,

那么返回的结果都是RowDataPacket,且不知道为什么会把结果返回两次。

时间: 2024-08-27 14:23:34

TCG开发日志(4)Sequelize的相关文章

TCG开发日志(1)后端的HelloWorld

最近准备把很久以前一直想做的一个TCG做出来,借这个项目练习前端和后端,也顺便把开发的过程都记录下来造福后人. 经过几天的查询,准备前端用ReactJS,后端用Node.js(KOA),Socket.io,MySQL. 之前准备使用NoSQL的数据库,但Redis对Windows平台的支持不好,MongoDB必须手写事务,所以还是决定用MySQL. 以上每种技术都几乎处于没学过的状态,所以等于是从零开始.这样也可以当作一个Tutorial. 首先去 https://nodejs.org/en/

TCG开发日志(6)Koa-body与Json的传输

在服务端和客户端之间用http的方式传递json时,现在可以在客户端用fetch发起请求: var datas = { foo:1, bar:2 } var ret = await fetch('/api/', { method: 'POST', headers:{ 'Content-Type' : 'application/json' }, body:JSON.stringify(datas) }); 本来在fetch后的URL中应该填写localhost:3000/api的,但是在本地调试出

TCG开发日志(5)Decorator, React-router

通过webpack可以把整个React项目整合成一个单页面的网站,此时可以通过react-router来处理路由. 首先安装: npm install react-router --save 由于react-router使用了history,要在webpack.config.js中进行相应的配置: devServer: { historyApiFallback: true } 否则,类似localhost:8080/foo的URL会返回404.之后为了将整个项目做成一个单页面,做如下处理: im

TCG开发日志(3)socket.io

为了让网页端和服务端能随时互相通讯,以前在HTTP下有多种写法,但是现在我们可以使用websocket,至少在Chrome上可以. 先安装socket.io npm install socket.io --save 在服务端,可以将socket.io和KOA结合起来: import Koa from 'koa';import IO from 'socket.io' let app = new Koa();let server = require('http').Server(app.callba

TCG开发日志(2)从零开始,ReactJS的Helloworld

ReactJS是今年很流行的前端框架,我以前做兼职的时候写过一个用PHP+Smarty+HTML+JQUERY的小网站, 当时只是感觉JQuery是一个用起来很方便的库,但是React完全不同,所有的写法都变了,组件化的开发过程也很流畅,代码管理也方便. 那么当然先要安装React,在工程目录下: npm install react --save npm install react-dom --save 显然我要使用ES6,所以还有一套Babel,其中,比起服务端,特别需要添加这个插件: npm

[课程设计]任务进度条&开发日志目录

[课程设计]任务进度条&开发日志目录 任务进度条&开发日志目录         周    期          时     间       任       务   Sprint One    11.14     ●  Scrum团队分工及明确任务1.0    Sprint One     11.15      ● Sprint One    11.16     ● Sprint One    11.17     ●

独立开发日志转移说明

为了加强与其他独立游戏开发者的沟通和交流,以后独立开发日志将发在专注独立游戏的indienova,其他通用性的技术文章将继续发在博客园,让不同内容的文章各归其位. 独立开发日志新地址:http://indienova.com/u/guigui/blog

《Invert》开发日志05:终止

今天终于看了久闻大名的<独立游戏大电影>,然后我就做了一个坑爹的决定:终止“Invert”项目的开发.没错,在还没正式开工之前,我就决定停掉这个项目,而且是永久终止.做这个决定并不是因为觉得凭一己之力开发一个游戏不可能,而是因为我突然发现自己正在做的并不是自己想要的游戏.几乎照抄别人的创意,在动工之前就想好如何盈利,只想着如何吸引玩家如何增加留存,这不全是商业游戏的思维和模式吗?这样的游戏又有什么独立开发的意义? 不管是“大电影”还是IndieACE上的讨论都明白无误地告诉我们,真正好的独立游

常规功能和模块自定义系统 (cfcmms)—029开发日志(创建ManyToMany的column4)

029开发日志(创建ManyToMany的column4) 根据以上几节的准备,在这一节中可以加入ManyToManyColumn.js了.先来看看做好的样子如下图: 单击文字链接可以显示该条记录的情况.按下删除按钮则会显示一个提示窗口,询问是否删除此项. 下面即为ManyToManyColumn.js的代码. /** * * ManyToMany记录的管理,将根据权限设置来显示修改或删除按钮 * * 蒋锋 2015.12.31 * */ Ext .define( 'app.module.wid