[hỏi] Làm sao để insert nhiều thẻ tags vào database trong nodejs + mysql + express



  • Em chào mọi người.
    Em có một vấn đề thêm nhiều tags vào mysql. Khi em tạo một bài viết mới thì làm sao để thêm thẻ tag cho bài viết, nó cho phép tìm kiếm tag trùng tên và tạo thêm tag mới cho bài viết.

    Cấu trúc bảng posts trong mysql của em như sau:

    CREATE TABLE `posts` (
      `post_id` int(11) NOT NULL AUTO_INCREMENT,
      `title` varchar(128) NOT NULL,
      `image` varchar(255)  NULL,
      `description` mediumtext NOT NULL,
      `content` longtext NOT NULL,
      `publish_date` date NOT NULL,
      `type_id` int(11) NOT NULL,
      `views_count` int(11) NOT null,
      `slug`  varchar(255) not null,
      PRIMARY KEY (`post_id`),
      UNIQUE KEY `post_id_UNIQUE` (`post_id`),
      UNIQUE KEY `title_UNIQUE` (`title`),
      KEY `type_fk_idx` (`type_id`),
      CONSTRAINT `type_fk` FOREIGN KEY (`type_id`) REFERENCES `typenews` (`type_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; 
    

    Cấu trúc bảng tag:

    CREATE TABLE `tag` (
      `tag_id` int(11) NOT NULL AUTO_INCREMENT,
      `tag_name` varchar(30) NOT NULL,
      `post_id` int(11) NOT NULL,
      `slug_tag`  varchar(255) not null,
      PRIMARY KEY (`tag_id`),
      UNIQUE KEY `tag_id_UNIQUE` (`tag_id`),
      KEY `post_fk_idx` (`post_id`),
      CONSTRAINT `post_fk` FOREIGN KEY (`post_id`) REFERENCES `posts` (`post_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
    

    Mọi người có thể hướng dẫn em cách làm được không ạ. Em xin cảm ơn nhiều!


  • Global Moderator

    @Xu-Xu said in [hỏi] Làm sao để insert nhiều thẻ tags vào database trong nodejs + mysql + express:

    Mọi người có thể hướng dẫn em cách làm được không ạ. Em xin cảm ơn nhiều!

    Bạn đang gặp vấn đề gì?



  • @Vũ Dạ, em chỉ muốn khi em thêm một một bài post mới thì cho phép em tạo thẻ nhiều thẻ tag mới cùng một lúc và save vào database nhưng em chưa hình dùng được cách làm ạ.


  • Global Moderator

    @Xu-Xu said in [hỏi] Làm sao để insert nhiều thẻ tags vào database trong nodejs + mysql + express:

    Bạn cần đọc hướng dẫn, xem video hoặc có người chỉ cho nhé. Chứ bảo chưa biết làm, hoặc cách thức như nào thì rất khó để hỗ trợ bạn.

    Như thiết kế của bạn sử dụng mysql, như trên chưa được tối ưu lắm, bạn đang thiết kế Post quan hệ 1-N với Tag. Với thiết kế như này chỉ việc dùng cậu lệnh insert đơn giản là xong.

    INSERT INTO table_name (column1, column2, column3, ...)
    VALUES (value1, value2, value3, ...);
    

    Khi làm việc với NodeJS

    var mysql = require('mysql');
    
    var con = mysql.createConnection({
      host: "localhost",
      user: "yourusername",
      password: "yourpassword",
      database: "mydb"
    });
    
    con.connect(function(err) {
      if (err) throw err;
      console.log("Connected!");
      var sql = "INSERT INTO customers (name, address) VALUES ?";
      var values = [
        ['John', 'Highway 71'],
        ['Peter', 'Lowstreet 4'],
        ['Amy', 'Apple st 652'],
        ['Hannah', 'Mountain 21'],
        ['Michael', 'Valley 345'],
        ['Sandy', 'Ocean blvd 2'],
        ['Betty', 'Green Grass 1'],
        ['Richard', 'Sky st 331'],
        ['Susan', 'One way 98'],
        ['Vicky', 'Yellow Garden 2'],
        ['Ben', 'Park Lane 38'],
        ['William', 'Central st 954'],
        ['Chuck', 'Main Road 989'],
        ['Viola', 'Sideway 1633']
      ];
      con.query(sql, [values], function (err, result) {
        if (err) throw err;
        console.log("Number of records inserted: " + result.affectedRows);
      });
    });
    

    Bạn tham khảo trước nhé:


Log in to reply