使用React、Node.js、MongoDB、Socket.IO开发一个角色投票应用的
前篇
这篇主要讲一下waterline的初始化,原文用的是mongoose原文第十二步一下子就到十二步了,因为原文件中react部分的代码本来就是用ES6写的,没什么好改的,唯一遇到的坑还是拼写 import NavbarActions from '../actions/NavbarActions''; 抄成 import NavbarActions from '../Actions/NavbarActions'; 眼睛不尖的小伙伴这两句的代码差别可以也要找好久,我整整一天没有找出来, socket.on('onlineUsers',(data) => { NavbarActions.updateOnlineUsers(data); }); 按道理应该会触发 吐完槽,还是开始第十二部分的改动吧,这是开始涉及到数据库了,原文用mongodb,我用mysql,改动就比较大了。 var mongoose = require('mongoose'); var characterSchema = new mongoose.Schema({ characterId: { type: String,unique: true,index: true },name: String,race: String,gender: String,bloodline: String,wins: { type: Number,default: 0 },losses: { type: Number,reports: { type: Number,random: { type: [Number],index: '2d' },voted: { type: Boolean,default: false } }); module.exports = mongoose.model('Character',characterSchema); 改用waterline并用es6规范后 import Waterline from 'waterline'; export default Waterline.Collection.extend({ identity: 'character',connection: 'myLocalMysql',schema: true,attributes: { characterId: {type:'string',primaryKey: true,index: true},name: 'string',race: 'string',gender: 'string',bloodline: 'string',wins: {type: 'integer',defaultsTo: 0 },losses: {type: 'integer',reports: {type: 'integer',voted: {type: 'boolean',defaultsTo: false} } });
在根目录下创建 config.js 针对waterline的配置文件,以便连接mysql import mysqlAdapter from 'sails-mysql'; const wlconfig = { adapters: { 'default':mysqlAdapter,mysql: mysqlAdapter },connections: { myLocalMysql: { adapter : 'mysql',host : 'localhost',port : 3306,user : 'root',password : '',database : 'test' } },defaults: { migrate: 'safe' } }; export default wlconfig; 然后回到server.js中启用 ... //首先在头部引入相关库和配置文件 import Waterline from 'waterline'; ... import Config from './config'; .... let app = express(); //原来上面这一句后面加上这两行 let orm = new Waterline(); orm.loadCollection(Character); //在最后面把 /** *原来的启动代码 * *server.listen(app.get('port'),() => { * console.log('Express server listening on port ' + app.get('port')); * }); */ //改成 orm.initialize(Config,(err,models) => { if(err) throw err; app.models = models.collections; //app.set('models',models.collections); app.connections = models.connections; server.listen(app.get('port'),() => { console.log('Express server listening on port ' + app.get('port')); }); });
后篇使用React、Node.js、MongoDB、Socket.IO开发一个角色投票应用的学习过程(三) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 编译器工具 Flex Bison for Windows 简单入门例子
- c# – 将24位bmp转换为16位?
- 如何自动调整Flutter中的图标大小
- ruby – 无法挽救Redis连接拒绝
- ruby-on-rails – 如何为link_to块传递html?
- c# – 在.NET Core中替换AppDomain.GetLoadedAssemblies()?
- cocos2d-x httpclient发送get或者post消息请求
- 2014PostgreSQL用户大会PPT下载
- ArcGIS.Server.9.3和ArcGIS API for Flex实现GraphicsLayer
- flex_如何创建自定义事件示例;