npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@vohoaian/datn-models

v1.3.3

Published

- [Gói `datn-models`: Các Mongoose models dựng sẵn cho đồ án cuối kỳ](#gói-datn-models-các-mongoose-models-dựng-sẵn-cho-đồ-án-cuối-kỳ) - [Các Models đang có sẵn:](#các-models-đang-có-sẵn) - [Lưu ý](#lưu-ý) - [AbstractUser (_abstract model - c

Readme

Gói datn-models: Các Mongoose models dựng sẵn cho đồ án cuối kỳ

Các Models đang có sẵn:

Lưu ý

  • Trước khi sử dụng được các Models trong gói này, cần gọi hàm connect(connectionType, uri?). Hàm này nhận 1 hoặc 2 đối số:

    • connectionType nếu là "PRODUCTION" thì không cần đối số 2
    • connectionType nếu là "MYSELF" thì truyền vào đối số 2 là connection string (ví dụ: mongodb+srv://admin:123456@yourdomain/xxxx)
  • Tất cả các models đều có sẵn 2 trường:

    • CreatedAt
    • UpdatedAt

AbstractUser (abstract model - can't be used)

  • *FullName: string
  • Phone: string - default = ""
  • Email: string
  • Gender: [0: UNKNOWN, 1 = MALE, 2 = FEMALE, 3 = OTHER] - default = 0
  • DOB: Date
  • Password: string - default = ""
  • Status: number - default = 0
  • Address: Object
    • *Street: string
    • *Ward: string;
    • *District: string;
    • *City: string;
  • Avatar: string

User (mở rộng AbstractUser)

  • GoogleID: string
  • FacebookID: string
  • Point: number - default = 0

Manager (mở rộng AbstractUser)

  • Roles: Array
    • PermissionLevel: number - default: 0
    • AuthorizedTime: Date - default: now
    • AuthorizedBy: ObjectId - ref Manager - must populate
    • *Restaurant: ObjectId - ref Restaurant - must populate

Shipper (mở rộng AbstractUser)

  • Point: number - default = 0
  • Rating: number - min = 0 - max = 5
  • Wallet: number - default = 0
  • History: Object - default
    • Skip: number - default = 0
    • Cancel: number - default = 0
    • Delivery: number - default = 0
  • Setting: Object - default
    • MaxOrder: number - default = 1
    • MaxDistance: number - default = 3
    • MaxAmount: number - default = 1000000
    • MinAmount: number - default = 0

Admin (mở rộng AbstractUser)

Restaurant

  • *Name: string
  • *ContractID: string
  • *Address: Object
    • *Street: string
    • *Ward: string;
    • *District: string;
    • *City: string;
  • Location: Object
    • type: string - default: "Point"
    • coordinates: tuple[longitude, latitude] - default = [0, 0]
  • *OpenAt: Date
  • *CloseAt: Date
  • *Type: number - default = 0
  • Description: string
  • Avatar: string
  • Anouncement: string
  • ParkingFee: number - default = 0
  • Status: number - default = 0
  • FoodCategories: Array - ref FoodCategory - must populate
  • Reviews: Array - ref RestaurantReview - must populate
  • Phone: string
  • IsPartner: boolean - default = false
  • *Categories: Array [0: Đồ ăn, 1: Đồ uống, 2: Ăn vặt, 3: Món chay, 4: Món lẩu, 5: Burger/Pizza, 6: Món gà]
  • *City: number
  • *District: number
  • Rating: number - min = 0 - max = 5
  • Wallet: number - default = 0

RestaurantReview

  • *User: ObjectId - ref User - must populate
  • *Order: ObjectId - ref Order - must populate
  • *Restaurant: ObjectId - ref Restaurant - must populate
  • *Content: string
  • Images: Array;
  • Status: number - default = 0
  • *Point: number - min = 1 - max = 5

FoodCategory

  • *Name: string
  • *Restaurant: ObjectId - ref Restaurant
  • Status: number - default = 0
  • Foods: Array - ref Food - must populate
  • Order: number - default = 0

Food

  • *Name: string
  • *FoodCategory: FoodCategory - ref FoodCategory - must populate
  • *OriginalPrice: number
  • Avatar: string
  • Type: number - default = 0
  • Status: number - default = 0
  • Order: number - default = 0
  • TotalOrder: number - default = 0
  • Options: Objecy
    • *id: number
    • IsMandatory: boolean - default = false
    • *Name: string
    • MaxSelect: number - default = 1
    • Items:
      • *id: number
      • IsDefault: boolean - default = false
      • MaxQuantity: number - default = 1 - min = 1
      • *Name: string
      • OriginalPrice: string - default = 0

City

  • *Id: number
  • *Name: string
  • *Districts: Array
    • *Id: number
    • *Name: string
    • *Ward: Array
      • *Id: number
      • *Name: string

Phương thức tĩnh

  • City.findAddress(cityId: number, districtId: number, wardId: number) => Promise<{ City: string, District: string, Ward: string, } | null>
  • City.findCities() => Promise<Array<{ Id: number, Name: number }>>;
  • City.findDistricts(cityId: number) => Promise<Array<{ Id: number, Name: number }>>;
  • City.findWards(cityId: number, districtId: number) => Promise<Array<{ Id: number, Name: number }>>;

DeliveryAddress

  • *Street: string
  • *Ward: string;
  • *District: string;
  • *City: string;
  • *Phone: string
  • *User: Object - ref User - must populate
  • *Location: Object
    • type: string - default: "Point"
    • coordinates: tuple[longitude, latitude] - default = [0, 0]

Order

  • *ShippingFee: number

  • *Subtotal: number

  • *Total: number

  • *Distance: number

  • *Address: string

  • *Coor: Object

    • *longitude: number
    • *latitude: number
  • *PaymentMethod: number

  • Note: string;

  • NoteCancel: string;

  • *Tool: boolean;

  • Foods: Array

    • *Food: ObjectId - ref Food - must populate
    • *Quantity: number
    • *Price: number
    • Options: Object
      • *id: number
      • *Items: Object
        • *id: number
        • *Quantity: number
        • *Price: number

ZaloTransaction

  • Description: string
  • Sender: Object
    • *Id: ObjectId
    • *Role: number [0: CUSTOMER, 1 = SHIPPER, 2 = MERCHANT, 3 = ADMIN]
  • Receiver: Object
    • *Id: ObjectId
    • *Role: Role [0: CUSTOMER, 1 = SHIPPER, 2 = MERCHANT, 3 = ADMIN]
  • Order: ObjectId - ref Order - must populate
  • *TransID: string
  • *Amount: number
  • *IsRefund: boolean

Phương thức trên đối tượng

  • getSender(): Promise (trả về Object mà Sender.Id trỏ đến, nằm trong các collection: User, Shipper, Manager, Admin)
  • getReceiver(): Promise (trả về Object mà Receiver.Id trỏ đến, nằm trong các collection: User, Shipper, Manager, Admin)

ChatRoom

  • TotalChat: number - default = 0
  • *Shipper: ObjectId - ref Shipper - must populate
  • *User: ObjectId - ref User - must populate
  • LastMessage: ObjectId - ref ChatMessage - must populate

ChatMessage

  • *Content: string
  • *Sender: number [SHIPPER = 1, CUSTOMER = 0]
  • ChatRoom: ObjectId - ref ChatRoom - must populate

Receipt

  • *PercentFee: number
  • *FeeTotal: number
  • *Payer: Object
    • *Id: ObjectId
    • *Role: number [0: CUSTOMER, 1 = SHIPPER, 2 = MERCHANT, 3 = ADMIN]
  • Status: number - default = 0
  • *DateStart: Date
  • DateEnd: Date

Phương thức trên đối tượng

  • getPayer(): Promise (trả về Object mà Payer.Id trỏ đến, nằm trong các collection: User, Shipper, Manager, Admin)

Notification

  • *Title: string
  • *Subtitle: string
  • *Receiver: Object
    • *Id: ObjectId
    • *Role: number [0: CUSTOMER, 1 = SHIPPER, 2 = MERCHANT, 3 = ADMIN]
  • Thumbnail: string
  • Status: number - default = -1

Phương thức trên đối tượng

  • getReceiver(): Promise (trả về Object mà Receiver.Id trỏ đến, nằm trong các collection: User, Shipper, Manager, Admin)

Image

  • *Sender: Object
    • *Id: ObjectId
    • *Role: number [0: CUSTOMER, 1 = SHIPPER, 2 = MERCHANT, 3 = ADMIN]
  • *Url: string

ShipperReview

  • *User: Types.ObjectId - ref User - must populate
  • *Order: Types.ObjectId - ref Order - must populate
  • *Shipper: Types.ObjectId - ref Shipper - must populate
  • Content: string
  • Images: Array
  • Status: number - default = 0
  • *Point: number - min = 1 - max = 5

Complaint

  • *Email: string
  • *FullName: string
  • *PhoneNumber: string
  • *Reason: string
  • *OrderID: Types.ObjectId - ref Order - must populate
  • Images: Array
  • Status: number - default = 0

Withdraw

  • *User: Object
    • *Id: ObjectId
    • *Role: number [0: CUSTOMER, 1 = SHIPPER, 2 = MERCHANT, 3 = ADMIN]
  • *Amount: number - min = 0
  • Status: number - default = 0

Phương thức trên đối tượng

  • getUser(): Promise (trả về Object mà Receiver.Id trỏ đến, nằm trong các collection: User, Shipper, Manager, Admin)

Setting

  • PercentFeeShipper: number - default = 0 - min = 0
  • PercentFeeMerchant: number - default = 0 - min = 0
  • ShippingFee: Array
    • *MaxDistance: number
    • *Fee: number
  • CustomerFee: number - default = 0 - min = 0
  • MAX_DAY_DELAY_PAY_RECEIPT: number - default = 14

Phương thức tĩnh

  • getSetting(): Promise
  • getShippingFee(distanceInKm: number): Promise

PromoCode (đang xây dựng)