YGNCodeAI နှင့်နည်းပညာအမေးအဖြေ

မှတ်ချက်။ AI ပြောတိုင်းအမှန်မဟုတ်ပါဘူး၊ တခါတလေသူကအမှားတွေပါပြောတက်ပါတယ်။ ကိုယ်ပိုင်စဥ်းစားဆင်ခြင်ဆုံးဖြတ်ပါ။

Nwe Ni Soe 17 Sep 2024, 5:13 pm

Token ကို mongo dbမှာ storeလုပ်ပီး ပြည့်စုံတဲ့ codeထုတ်ပေးပါ

Token ကို MongoDB မှာ store လုပ်ဖို့အတွက် ပြည့်စုံတဲ့ code ကို Node.js နဲ့ MongoDB ကိုအသုံးပြုပြီး ရေးပေးပါမယ်။

ပထမဆုံး လိုအပ်တဲ့ package တွေကို install လုပ်ရပါမယ်:

npm install express mongoose jsonwebtoken bcrypt dotenv

ပြီးရင် အောက်ပါ code ကို အသုံးပြုနိုင်ပါတယ်:

const express = require('express');
const mongoose = require('mongoose');
const jwt = require('jsonwebtoken');
const bcrypt = require('bcrypt');
require('dotenv').config();

const app = express();
app.use(express.json());

// MongoDB connection
mongoose.connect(process.env.MONGODB_URI, { useNewUrlParser: true, useUnifiedTopology: true });

// User model
const UserSchema = new mongoose.Schema({
  username: String,
  password: String,
  tokens: [{
    token: {
      type: String,
      required: true
    }
  }]
});

UserSchema.methods.generateAuthToken = async function() {
  const user = this;
  const token = jwt.sign({ _id: user._id.toString() }, process.env.JWT_SECRET);
  
  user.tokens = user.tokens.concat({ token });
  await user.save();
  
  return token;
};

const User = mongoose.model('User', UserSchema);

// Register route
app.post('/register', async (req, res) => {
  try {
    const { username, password } = req.body;
    const hashedPassword = await bcrypt.hash(password, 8);
    
    const user = new User({ username, password: hashedPassword });
    await user.save();
    
    const token = await user.generateAuthToken();
    res.status(201).send({ user, token });
  } catch (error) {
    res.status(400).send(error);
  }
});

// Login route
app.post('/login', async (req, res) => {
  try {
    const { username, password } = req.body;
    const user = await User.findOne({ username });
    
    if (!user) {
      throw new Error('Unable to login');
    }
    
    const isMatch = await bcrypt.compare(password, user.password);
    
    if (!isMatch) {
      throw new Error('Unable to login');
    }
    
    const token = await user.generateAuthToken();
    res.send({ user, token });
  } catch (error) {
    res.status(400).send(error);
  }
});

const port = process.env.PORT || 3000;
app.listen(port, () => console.log(`Server running on port ${port}`));

ဒီ code မှာ:

  1. User model မှာ tokens array ကို ထည့်ထားပါတယ်။
  2. generateAuthToken method က JWT token ကို generate လုပ်ပြီး user document ထဲမှာ store လုပ်ပါတယ်။
  3. Register နဲ့ login route တွေမှာ token ကို generate လုပ်ပြီး response ပြန်ပေးပါတယ်။

.env file မှာ အောက်ပါ configuration တွေကို ထည့်ပေးရပါမယ်:

MONGODB_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret_key
PORT=3000

ဒီ code က အခြေခံ token storage နဲ့ authentication process ကို ပြထားတာဖြစ်ပါတယ်။ လက်တွေ့သုံးမယ်ဆိုရင် error handling နဲ့ security features တွေ ထပ်ထည့်သင့်ပါတယ်။

ပြန်လည်မျှဝေပါ... Facebook Twitter LinkedIn WhatsApp Telegram