摘要:吐完槽,還是開始第十二部分的改動吧,這是開始涉及到數據庫了,原文用我用改動就比較大了。后篇使用開發一個角色投票應用的學習過程三
前篇
這篇主要講一下waterline的初始化,原文用的是mongoose 原文第十二步使用React、Node.js、MongoDB、Socket.IO開發一個角色投票應用的學習過程(一)
一下子就到十二步了,因為原文件中react部分的代碼本來就是用ES6寫的,沒什么好改的,唯一遇到的坑還是拼寫
import NavbarActions from "../actions/NavbarActions"";
抄成
import NavbarActions from "../Actions/NavbarActions";
眼睛不尖的小伙伴這兩句的代碼差別可以也要找好久,我整整一天沒有找出來,
socket.on("onlineUsers", (data) => { NavbarActions.updateOnlineUsers(data); });
按道理應該會觸發
NavbarStore中的 onUpdateOlineUsers 這個事件的,可是就因為我把actions敲成了Actions,頁面執行沒有任何錯誤提示,但是就是不執行onUpdateOlineUsers這個事件,通過chrome調試發現,我調用的是updateOnlineUsers1,這個玩意兒怎么來的,我把原文中的代碼復制過來,運行就正常,用自己的怎么能不行,后來我把原文的代碼另存一個文件通過diff兩個文件的不同才發現這個錯誤的,還好在第二行,diff 很快發現了。
吐完槽,還是開始第十二部分的改動吧,這是開始涉及到數據庫了,原文用mongodb,我用mysql,改動就比較大了。
原文中的models是這樣的
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, default: 0 }, reports: { type: Number, default: 0 }, 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, unique: true,index: true}, name: "string", race: "string", gender: "string", bloodline: "string", wins: {type: "integer", defaultsTo: 0 }, losses: {type: "integer", defaultsTo: 0 }, reports: {type: "integer", defaultsTo: 0 }, voted: {type: "boolean", defaultsTo: false} } });
注意:我這里去掉了random這個字段,原文中這個random字段就是用來隨機獲取數據庫中的數據的,但同樣的方法無法在mysql中用,所以我就去掉了,實現方法后文里會講
waterline 的一些基礎用法可以參見我的《使用 Express 和 waterline 創建簡單 Restful API》這篇小文,或自行查看官方文檔
在根目錄下創建 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")); }); });
后篇注意:config.js中的 migrate 屬性 一開始的時候可以把它設為 "alter" 這樣可以省了你自己創建數據庫的過程,但寫入數據以后一定要改為"safe" 不然重啟服務會清空清數據的。
使用React、Node.js、MongoDB、Socket.IO開發一個角色投票應用的學習過程(三)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/79391.html
摘要:本項目是對使用開發一個角色投票應用的學習過程。到這里為止沒有遇到多大的坑,最多的往往是拼寫錯誤引起的問題,唯一由于拼寫導致,但不提示錯誤的是我打成了運行的時候服務器一直沒有響應,找了好久才找到這個錯誤后篇使用開發一個角色投票應用的學習過程二 本項目是對使用React、Node.js、MongoDB、Socket.IO開發一個角色投票應用的學習過程。 英文原文:Create a char...
摘要:將就用一下,能實現相同的功能就可以了。的方法可以從返回最大值,但是新版中的不行,只能通過這樣的方式返回最大值。 前篇 使用React、Node.js、MongoDB、Socket.IO開發一個角色投票應用的學習過程(一)使用React、Node.js、MongoDB、Socket.IO開發一個角色投票應用的學習過程(二) 原文第十三步,Express API路由 第一個路由是用來創建角...
摘要:異步最佳實踐避免回調地獄前端掘金本文涵蓋了處理異步操作的一些工具和技術和異步函數。 Nodejs 連接各種數據庫集合例子 - 后端 - 掘金Cassandra Module: cassandra-driver Installation ... 編寫 Node.js Rest API 的 10 個最佳實踐 - 前端 - 掘金全文共 6953 字,讀完需 8 分鐘,速讀需 2 分鐘。翻譯自...
摘要:鑒于此目的,我決定快速構建一個用于此目的的問卷調查應用程序。這將啟動一個服務器并將應用程序部署到該服務器。圖應用程序配置基礎前端這個問卷調查應用程序對常見用戶界面和布局使用了框架。 全棧教程。轉自 使用 Node.js、Express、AngularJS 和 MongoDB 構建一個實時問卷調查應用程序 最近,在向大學生們介紹 HTML5 的時候,我想要對他們進行問卷調查,并向他們顯...
閱讀 3066·2023-04-25 18:54
閱讀 2591·2021-11-02 14:40
閱讀 3176·2021-09-23 11:58
閱讀 2424·2019-08-30 13:50
閱讀 1231·2019-08-29 12:46
閱讀 3117·2019-08-28 17:51
閱讀 679·2019-08-26 11:47
閱讀 897·2019-08-23 16:17