接續昨天~我以為migration起來之後,應該就解決了
正當我想直接打API去測試看看能不能把值存入database的時候
發現一直出現錯誤,整個弄到快瘋惹,網路上的方法每個人都不太一樣。
最後終於解決掉了,要來分享一下,希望你遇到的時候也有用
我們上上次已經建立完Model了,也成功migration進去了
這邊我在提供一下model/user.js 的程式碼
'use strict';
const {
Model
} = require('sequelize');
module.exports = (sequelize, DataTypes) => {
class User extends Model {
/**
* Helper method for defining associations.
* This method is not a part of Sequelize lifecycle.
* The `models/index` file will call this method automatically.
*/
static associate(models) {
// define association here
}
}
User.init({
firstName: DataTypes.STRING,
lastName: DataTypes.STRING,
email: DataTypes.STRING
}, {
sequelize,
modelName: 'User',
});
return User;
};
接著回到我們開啟一個Controllers資料夾裡面創建一筆
dataController.js
// dataController.js
const { User } = require("../models");
async function createData(req, res) {
try {
const jsonData = req.body;//接受request
await User.create(jsonData);//利用ORM來建立資料
console.log("成功", jsonData);
res.status(200).send("成功插入数据");
} catch (error) {
console.error("失敗:", error);
res.status(500).send("失敗");
}
}
module.exports = {
createData,
};
我們做了一個async function 內容主要就是要打資料進去。
接著我們回到index.js
// 導入控制器
const dataController = require('./Controllers/dataController');
我們原本的程式碼是類似這樣
製作一個post請求
app.post("/api/data", (req, res) => {
const jsonData = req.body; // 可以取得前端所打的request
console.log("我們從前端得到了:", jsonData);;
res.status(200).send("我們回給前端的response"); //最後回覆API給前端
});
但我們已經有匯入Contoller所以我們把程式碼改寫一下
app.post("/api/data", dataController.createData);
這樣就可以了!!我們終於完成第一個MVC了
當我嘗試用資料去打打看的時候就噴錯了
出現這個錯誤
總之在網路上花了好久時間才找到解決方式,可是當我解決之後,
我就沒辦法再呈現這個錯誤了,我只好趁著記憶把它記下來,提供給大家參考
因為他一直沒辦法讀取到,其實這件事讓我很困惑。
理論上我有給uesrname password database 在我認知裡面
他應該已經做到跟use_env_variable 一樣的事情了
一開始我是設定false,表示不需要,但還是錯誤,接著
我到.env裡面設定以下
DATABASE_URL_DEV = "mysql://你的root:你的密碼@localhost:3306/你的database"
並用process.env.DATABASE_URL_DEV
變成這個錯誤
接著最後改成傳入字串就可以了....
但是當我回頭想要一步一步debug的時候,發現我即使沒有加入
use_env_variable 也不會有錯誤,屬實有點尷尬,而我在練習的專案裡面
也沒加入git(跪),總之,既然這個方法解決掉這個問題,我就寫出來讓大家
參考一下了。
最後,我們修好這個問題之後再重新打一次API~
資料庫也確實進去囉