Hỏi cách reset biến về giá trị mặc định trong NODE.



  • Mình có 1 biến check giá trị là TRUE, cứ sau một khoảng thời gian ví dụ như một ngày mình muốn đặt lại giá trị cho biến đấy là FALSE các giúp mình với.
    Cảm ơn.



  • Không rõ câu hỏi của bạn?

    • Biến bạn set ở đâu? Biến environment hay biến trong code?
    • Sau một khoảng thời gian set lại là tự động hay thủ công, điều kiện gì để set TRUE hay set FALSE?
    • Mục đích cái biến của bạn để làm cái gì vậy?


  • Mình đang viết một chương trình về điểm danh các thành viên trong một nhóm, ai đến sớm , ai đến muộn thông qua bot chat trong slack. Mỗi khi có người chat với con bot đó cụm từ "checkin" thì hệ thống sẽ kiểm tra xem thời điểm chat lúc đó là mấy giờ đến sớm hay đến muộn rồi đưa ra thông báo.
    Để giới hạn mỗi người chỉ được phép checkin 1 lần nên sẽ có một biến boolean nếu có người checkin thì biến đó sẽ được set thành TRUE sau khoảng 24h biến đó sẽ được set lại thành FALSE.
    Mình muốn hỏi là có hàm nào trong nodejs làm được chức năng kiểu như vậy không.



  • Không rõ cách tổ chức dữ liệu của bạn thế nào và có lưu lại lịch sử không, mình gợi ý 2 cách:

    • Dùng setTimeout() : không khuyến khích
      vd: checkedIn = true;
      setTimeout(functnion(){
      checkedIn = false;
      }, XXX)
      // XXX thời thời gian bạn muốn set lại.

    • Dùng Redis hoặc gì đó tương tự để lưu, trường hợp bạn restart Node cũng không ảnh hưởng.
      vd 1:
      redis.set('checkin:personid', 'true');
      redis.expire('checkin:personid', XXX);
      // XXX thời thời gian bạn muốn dữ liệu tự mất.
      Vậy khi checkin, bạn ghép key rồi check xem người đã có dữ liệu chưa, chưa có thì set như trên, có rồi thì thôi. Sau XXX thì nó sẽ thể mất và có thể checkin tiếp.

    vd2: redis.set('checkin:YYYY:MM:DD:personid', 'true');
    Với việc ghép ngày tháng vào key Redis, bạn không cần cho nó expire hoặc cho expire lâu lâu chút để theo dõi lại.
    Tới đây chắc bạn đã biến cách kiểm tra làm sao rồi.



  • @Giang mình cảm ơn nhé để mình thử xem.



  • @duongnt Mình nghĩ bạn nên tạo cái bảng lưu vào hay hơn. Dù sao dùng biến nó cũng lưu trên ram. Nếu số lượng người dùng nhiều nó cũng là vấn đề đó.
    @Giang Mình cũng làm qua redis rồi nhưng cũng chỉ hello word thôi chứ chưa sâu. Nhưng hình như nó cũng lưu toàn bộ vào ram thì phải.
    Đó là những gì mình biết. Nếu sai mọi người chỉ bảo thêm



  • Đúng rồi bạn Khoa, Redis lưu ram và truy xuất nhanh. Chỉ là chứa 1 vài ký tự đánh dấu và mỗi user chỉ 1 key thì phải đến hàng triệu users bạn mới phải lo lắng. Mà nếu chỉ lưu đơn giản vậy mà dùng database thì cũng hơi phí. Tùy mục đích hoặc thấy cái nào dễ, nhanh, thân thuộc thì dùng thôi, tính năng này cũng nhỏ thôi mà.



  • Bạn có thể dùng cron job hoặc schedule
    https://github.com/node-schedule/node-schedule



  • @1312624 tks bạn ^^


Log in to reply