Go - Export struct

在研究怎麼 Export struct 時,找到說 struct 名字要大寫,但改成大寫後卻出現下面的警告:

export struct field is unused

原來是 struct field 也要改成大寫,變成 exported fields!

Firebase 學習記錄

因為網路上的教學有些有點舊,所以整理了一篇 firebase 學習記錄。

  1. 建立專案,參考這篇
  2. 寫入資料(不覆蓋路徑下舊有的資料,但為了區別所以會自動產生一個亂數的key)
     function write(groupid, userid, username, message) {
       push(ref(db, '/group/'+ groupid), {
         userid: userid,
         username: username,
         message: message,
         timestamp: Date.now()
       })
     }
    
  3. 讀取資料,存入 itemList 後回傳
     function read(groupid) {
       const itemList = []
          
       onValue(ref(db, '/group/'+groupid), (snapshot) => {
         snapshot.forEach(function (snapshot) {
           var obj = snapshot.val();
           itemList.push(obj)
       })
       }, {
         onlyOnce: true
       });
    
       return itemList
     }
    
  4. 以覆蓋方式寫入資料(重置資料庫)
     function resetDB() {
       set(ref(db, '/group'), {});
     }
    

完整程式碼:

import { initializeApp } from "firebase/app";
import { getDatabase, ref, set, push, onValue} from "firebase/database";

const firebaseConfig = {
  apiKey: "你的 api key",
  authDomain: "你的 authDomain",
  databaseURL: "你的 db URL",
  projectId: "你的 projectId",
  storageBucket: "你的 storageBucket",
  messagingSenderId: "你的 messagingSenderId",
  appId: "你的 appId",
  measurementId: "你的 measurementId"
};

// Initialize Firebase
const app = initializeApp(firebaseConfig);
const db = getDatabase(app);

export function resetDB() {
  set(ref(db, '/group'), {});
}
export function write(groupid, userid, username, message) {
  push(ref(db, '/group/'+ groupid), {
    userid: userid,
    username: username,
    message: message,
    timestamp: Date.now()
  })
}

export function read(groupid) {
  const itemList = []
  
  onValue(ref(db, '/group/'+groupid), (snapshot) => {
    snapshot.forEach(function (snapshot) {
      var obj = snapshot.val();
      itemList.push(obj)
  })
  }, {
    onlyOnce: true
  });

  return itemList
}

Reference

Firebase doc

MySQL - invalid memory address or nil pointer dereference

在 Go 連線資料庫之後做操作,卻出現以下錯誤:

runtime error: invalid memory address or nil pointer dereference

後來發現是 db 在程式中有重複宣告,所以以後出現這類型錯誤,先檢查物件是否是 nil。

Netlify & React - Page not found

在 Netlify 部署好 React 網站後,卻發現某些頁面點擊會顯示 Page Not Found. Looks like you’ve followed a broken link 這樣的錯誤。

這是因為 Netlify 不知道 root route 之外的 route 要怎麼去 locate。以下是我的解決方式:

  1. public 資料夾底下建立檔案 _redirects
  2. 在這個檔案中貼上內容: /* /index.html 200
  3. 存擋,重新 deploy & publish !

Reference

Netlify React Router Not Working: 5 Simple Steps to Fix it

MySQL - You have an error in your SQL syntax

在執行 source xx.sql 執行 SQL 指令的時候,一直出現以下錯誤:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '一些SQL指令'

後來發現是 CREATE 指令結束、 INSERT 指令前沒有加上分號……特地打一篇警惕自己!