国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

使用React、Node.js、MongoDB、Socket.IO開(kāi)發(fā)一個(gè)角色投票應(yīng)用的學(xué)習(xí)過(guò)程(二

jsdt / 959人閱讀

摘要:吐完槽,還是開(kāi)始第十二部分的改動(dòng)吧,這是開(kāi)始涉及到數(shù)據(jù)庫(kù)了,原文用我用改動(dòng)就比較大了。后篇使用開(kāi)發(fā)一個(gè)角色投票應(yīng)用的學(xué)習(xí)過(guò)程三

前篇

使用React、Node.js、MongoDB、Socket.IO開(kāi)發(fā)一個(gè)角色投票應(yīng)用的學(xué)習(xí)過(guò)程(一)

這篇主要講一下waterline的初始化,原文用的是mongoose 原文第十二步

一下子就到十二步了,因?yàn)樵募?em>react部分的代碼本來(lái)就是用ES6寫(xiě)的,沒(méi)什么好改的,唯一遇到的坑還是拼寫(xiě)

import NavbarActions from "../actions/NavbarActions"";

抄成

import NavbarActions from "../Actions/NavbarActions";

眼睛不尖的小伙伴這兩句的代碼差別可以也要找好久,我整整一天沒(méi)有找出來(lái),

socket.on("onlineUsers", (data) => {
        NavbarActions.updateOnlineUsers(data);
      });

按道理應(yīng)該會(huì)觸發(fā)
NavbarStore中的 onUpdateOlineUsers 這個(gè)事件的,可是就因?yàn)槲野?strong>actions敲成了Actions,頁(yè)面執(zhí)行沒(méi)有任何錯(cuò)誤提示,但是就是不執(zhí)行onUpdateOlineUsers這個(gè)事件,通過(guò)chrome調(diào)試發(fā)現(xiàn),我調(diào)用的是updateOnlineUsers1,這個(gè)玩意兒怎么來(lái)的,我把原文中的代碼復(fù)制過(guò)來(lái),運(yùn)行就正常,用自己的怎么能不行,后來(lái)我把原文的代碼另存一個(gè)文件通過(guò)diff兩個(gè)文件的不同才發(fā)現(xiàn)這個(gè)錯(cuò)誤的,還好在第二行,diff 很快發(fā)現(xiàn)了。

吐完槽,還是開(kāi)始第十二部分的改動(dòng)吧,這是開(kāi)始涉及到數(shù)據(jù)庫(kù)了,原文用mongodb,我用mysql,改動(dòng)就比較大了。
原文中的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規(guī)范后

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這個(gè)字段,原文中這個(gè)random字段就是用來(lái)隨機(jī)獲取數(shù)據(jù)庫(kù)中的數(shù)據(jù)的,但同樣的方法無(wú)法在mysql中用,所以我就去掉了,實(shí)現(xiàn)方法后文里會(huì)講

waterline 的一些基礎(chǔ)用法可以參見(jiàn)我的《使用 Express 和 waterline 創(chuàng)建簡(jiǎn)單 Restful API》這篇小文,或自行查看官方文檔

在根目錄下創(chuàng)建 config.js 針對(duì)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中啟用

...
//首先在頭部引入相關(guān)庫(kù)和配置文件
import Waterline from "waterline";
...

import Config from "./config";
....

let app = express();
//原來(lái)上面這一句后面加上這兩行
let orm = new Waterline();
orm.loadCollection(Character);


//在最后面把
/**
  *原來(lái)的啟動(dòng)代碼
  *
  *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 屬性 一開(kāi)始的時(shí)候可以把它設(shè)為 "alter" 這樣可以省了你自己創(chuàng)建數(shù)據(jù)庫(kù)的過(guò)程,但寫(xiě)入數(shù)據(jù)以后一定要改為"safe" 不然重啟服務(wù)會(huì)清空清數(shù)據(jù)的。

后篇

使用React、Node.js、MongoDB、Socket.IO開(kāi)發(fā)一個(gè)角色投票應(yīng)用的學(xué)習(xí)過(guò)程(三)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/79391.html

相關(guān)文章

  • 使用ReactNode.jsMongoDBSocket.IO開(kāi)發(fā)一個(gè)角色投票應(yīng)用學(xué)習(xí)過(guò)程(一

    摘要:本項(xiàng)目是對(duì)使用開(kāi)發(fā)一個(gè)角色投票應(yīng)用的學(xué)習(xí)過(guò)程。到這里為止沒(méi)有遇到多大的坑,最多的往往是拼寫(xiě)錯(cuò)誤引起的問(wèn)題,唯一由于拼寫(xiě)導(dǎo)致,但不提示錯(cuò)誤的是我打成了運(yùn)行的時(shí)候服務(wù)器一直沒(méi)有響應(yīng),找了好久才找到這個(gè)錯(cuò)誤后篇使用開(kāi)發(fā)一個(gè)角色投票應(yīng)用的學(xué)習(xí)過(guò)程二 本項(xiàng)目是對(duì)使用React、Node.js、MongoDB、Socket.IO開(kāi)發(fā)一個(gè)角色投票應(yīng)用的學(xué)習(xí)過(guò)程。 英文原文:Create a char...

    loonggg 評(píng)論0 收藏0
  • 使用ReactNode.jsMongoDBSocket.IO開(kāi)發(fā)一個(gè)角色投票應(yīng)用學(xué)習(xí)過(guò)程(三

    摘要:將就用一下,能實(shí)現(xiàn)相同的功能就可以了。的方法可以從返回最大值,但是新版中的不行,只能通過(guò)這樣的方式返回最大值。 前篇 使用React、Node.js、MongoDB、Socket.IO開(kāi)發(fā)一個(gè)角色投票應(yīng)用的學(xué)習(xí)過(guò)程(一)使用React、Node.js、MongoDB、Socket.IO開(kāi)發(fā)一個(gè)角色投票應(yīng)用的學(xué)習(xí)過(guò)程(二) 原文第十三步,Express API路由 第一個(gè)路由是用來(lái)創(chuàng)建角...

    JessYanCoding 評(píng)論0 收藏0
  • node技術(shù)棧 - 收藏集 - 掘金

    摘要:異步最佳實(shí)踐避免回調(diào)地獄前端掘金本文涵蓋了處理異步操作的一些工具和技術(shù)和異步函數(shù)。 Nodejs 連接各種數(shù)據(jù)庫(kù)集合例子 - 后端 - 掘金Cassandra Module: cassandra-driver Installation ... 編寫(xiě) Node.js Rest API 的 10 個(gè)最佳實(shí)踐 - 前端 - 掘金全文共 6953 字,讀完需 8 分鐘,速讀需 2 分鐘。翻譯自...

    王偉廷 評(píng)論0 收藏0
  • 【全棧】使用Node、Express、Angular、MongoDB構(gòu)建一個(gè)實(shí)時(shí)問(wèn)卷調(diào)查應(yīng)用程序

    摘要:鑒于此目的,我決定快速構(gòu)建一個(gè)用于此目的的問(wèn)卷調(diào)查應(yīng)用程序。這將啟動(dòng)一個(gè)服務(wù)器并將應(yīng)用程序部署到該服務(wù)器。圖應(yīng)用程序配置基礎(chǔ)前端這個(gè)問(wèn)卷調(diào)查應(yīng)用程序?qū)ΤR?jiàn)用戶界面和布局使用了框架。 全棧教程。轉(zhuǎn)自 使用 Node.js、Express、AngularJS 和 MongoDB 構(gòu)建一個(gè)實(shí)時(shí)問(wèn)卷調(diào)查應(yīng)用程序 最近,在向大學(xué)生們介紹 HTML5 的時(shí)候,我想要對(duì)他們進(jìn)行問(wèn)卷調(diào)查,并向他們顯...

    BigTomato 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<