ngminhtrung / fcchn-blog-backend Goto Github PK
View Code? Open in Web Editor NEWfreeCodeCamp Hanoi - Blog app - Back-end part
freeCodeCamp Hanoi - Blog app - Back-end part
https://techmaster.vn/posts/34494/danh-gia-cac-api-editor-pho-bien-nhat
Bổ sung module JSDoc để tạo API documents cho project.
package.json
: thêm dòng "jsdoc": "./node_modules/jsdoc/jsdoc.js -c jsdoc.json"
vào scripts
.jsdoc.json
tại folder root.Trong User model, lúc nào dùng method, lúc nào dùng statics? Lý do? Ưu nhược điểm?
Robo3T (tên cũ: Robomongo) được dùng để xem database MongoDB trên máy.
Sau khi cài đặt, mở Robo3T, tạo connection đến database trong máy.
Dear all,
Về bảo mật cho website, mình hiểu có 2 thứ lớn cần lưu tâm:
Mục 2 có thể bị trùng với mục 1, nhưng sẽ có những thứ khác cần phải quan tâm riêng cho công nghệ Node.js.
Về bảo mật cho website nói chung --> Tham khảo MDN Mozilla - Web Security
Về bảo mật cho Node.js, tham khảo:
Mình đề xuất hướng tiếp cận cho mục này như sau:
Tham chiếu đến tài liệu chính ở đây.
{
{
"content": "Bài này viết tốt quá",
"authorID": ObjectId("1qrq3522aa6a3233a92141411"),
"postID": 11,
createdAt: { type: Date, default: Date.now }
},
{
"content": "Cần bổ sung thêm về ...",
"authorID": ObjectId("412b1153a2aa6a3233a9132e7"),
"postID": 141,
createdAt: { type: Date, default: Date.now }
}
},
Mọi người thảo luận ở đây
Tham khảo: https://github.com/asmeurer/git-workflow
Cần viết quy trình:
blog-app mở cho tất cả mọi người, và chúng tôi hoan nghênh bất kỳ đóng góp nào. Chúng tôi tin rằng dự án này sẽ hoàn thiện hơn khi nhận được sự quan tâm của các bạn.
Những chương trình cần cài trước trong máy:
Tên chương trình | Phiên bản |
---|---|
Node.js | 8.9.3 |
MongoDB | 3.4.5 |
Nếu Node.js hoặc MongoDB đã có sẵn trong máy của bạn, hãy chạy câu lệnh sau để kiểm tra phiên bản đã cài đặt:
node -v
mongo --version
Nếu phiên bản Node.js hoặc MongoDB của bạn đang thấp hơn phiên bản yêu cầu trên, bạn cần tiến hành cập nhật.
Bạn cần fork dự án này về repo của bạn.
/learningReact
git clone https://github.com/[tên-account-Github-của-bạn]/fcchn-blog-backend.git
Lưu ý lần nữa: nhớ đổi "tên-account-Github-của-bạn" trong đường dẫn trên với username Github của bạn.
cd fcchn-blog-backend
)$ git remote add upstream https://github.com/ngminhtrung/fcchn-blog-backend.git
Lưu ý: từ upstream
có thể thay đổi bằng bất kỳ từ nào khác theo ý bạn. Chủ yếu bạn cần nhớ từ khóa này để dùng sau này, khi cần cập nhật mã nguồn từ repo chính thức của fcchn-blog-backend.
Bây giờ bạn đã có 1 bản fork, sẽ có vài việc cần làm để giúp cho bản fork này được cập nhật.
Hãy thực hiện việc sau trước khi tạo 1 branch mới để Pull Request:
develop
:git status
// On branch develope
// Your branch is up-to-date with 'origin/develop'
Nếu đang ở nhánh khác, hãy xử lý các files còn đang dang dở, commits, rồi chuyển sang nhánh develop
:
git checkout develop
Thực hiện 1 pull có rebase đối với repo "upstream" (chính là repo gốc của fcchn-blog-backend). Lưu ý: nếu bạn đã từng thay từ "upstream" bằng cái tên khác ở bước bên trên, thì ở đây cũng phải đổi "upstream" thành từ mà bạn đã đặt.
git pull --rebase upstream develop
Việc này sẽ giúp lôi mọi thay đổi từ nhánh develop
của repo chính thức về repo của bạn (mà không tạo thêm commit trong repo trên máy).
develop
trên repo trên máy đến bản fork online trên Githubgit push origin develop --force
Thao tác này sẽ ghi đè nhánh develope
trên bản fork của bạn (trên Github).
Trước khi tiến hành công việc, bạn sẽ cần tạo 1 nhánh mới liên quan cụ thể đến issue/ tính năng mà bạn đang nhắm đến. Mọi code của bạn sẽ được đẩy vào nhánh này.
Định dạng tên nhánh:
fix/xxx
feature/xxx
trong đó xxx
là mô tả "cực" ngắn về thay đổi hoặc tính năng mà bạn đang thêm vào. Ví dụ, nếu bạn định fix bug liên quan đến tính năng log-in bằng email, hãy đặt tên nhánh là fix/email-login
.
Tạo một nhánh mới trên máy và chuyển đến nhánh đó bằng lệnh:
git checkout -b [tên_nhánh_mới_của_bạn]
sau đó đẩy lên Github
$ git push origin [tên_nhánh_mới_của_bạn]
Nếu cần tra thêm cách xử lý với nhánh, hãy xem tại đây.
Bạn cần có ESLint được cài vào editor của mình, ESLint sẽ giúp phát hiện bất kỳ đoạn code nào không tuân thủ với quy định về viết code của fcchn-blog-backend. Các quy định được dựa trên Airbnb JavaScript Style Guide.
Xin đừng bỏ qua bất kỳ vấn đề nào do ESLint chỉ ra, bởi quy định về viết code được sinh ra để đảm bảo chúng ta luôn có một code base sạch sẽ và sáng sủa.
Một khi bạn đã fork fcchn-blog-backend về máy, trước khi chạy chương trình, bạn cần cài đặt tất cả các dependencies qua lệnh:
npm install
Sau đó bạn cần khởi động MongoDB, thêm dữ liệu cho database, sau đó khởi động chương trình:
# Bật mongo server ở một terminal riêng:
# Nếu dùng macOS:
mongod
# Nếu dùng Windows, bạn cần phải chỉ rõ đường dẫn đến file thực thi mongod
# Đường dẫn dưới đây chỉ là mẫu, hãy thay 3.4 bằng phiên bản thực tế cài trên máy bạn:
"C:\Program Files\MongoDB\Server\3.4\bin\mongod"
# Khởi động fcchn-blog-backend
# Lệnh sau sẽ thêm dữ liệu vào database trong lần cài đặt đầu tiên
# Và lệnh này chỉ cần chạy 1 lần duy nhấ
npm run only-once
# Khởi động ứng dụng
npm start
Bây giờ, hãy mở trình duyệt lên, gõ vào thanh địa chỉ http://localhost:3000. Nếu ứng dụng chạy, thì nghĩa là mọi thứ đã ngon lành. Còn không, bạn có thể tạo issue trong repo chính thức của fcchn-blog-backend để hỏi.
Khi bạn đã sẵn sàng để chia sẻ code mới thêm vào, bạn cần test lại ứng dụng với:
npm test
và đảm bảo mọi tests phải được pass.
Một khi đã đóng góp vào blog-app, bạn đồng ý rằng code của bạn sẽ có bản quyền theo nhóm MIT.
Để test API
NGHỊCH NGỢM RESTAPI VỚI POSTMAN – GỌI API ĐÂU CÓ GÌ KHÓ?https://toidicodedao.com/2017/01/10/goi-rest-api-voi-postman/
Một số cách để sử dụng POSTMAN hiệu quả hơn
https://viblo.asia/p/mot-so-cach-de-su-dung-postman-hieu-qua-hon-PwRkgmbAGEd
sử dụng postman để test tự động cho nhiều api
https://viblo.asia/p/su-dung-postman-de-test-tu-dong-cho-nhieu-api-bJzKm1oYK9N
Hiện mình đang nghĩ like và unline sẽ để là true
hoặc false
.
@tungnt-580 : Với like, Nếu để giống như clap của Medium thì phải là number. Nếu phức tạp hơn giống Facebook thì lại là array.
Long: Nếu thêm unline vào thì lại khác. Nếu có unlike, thì like: [{user: ‘A’, user: ‘B’}], số lượng like lấy bằng like.length, mỗi lần click vào nút like/unlike, thì tìm username, có thì là unlike (xoá bỏ phần tử đó trong mảng), mà không có thì là like (thêm user đó vào mảng) 😄
Long: Làm việc với object và mảng, thì mọi người dùng thư viện này phổ biến này. dự án nào về JS cũng sẽ có
PS: Note riêng thành 1 issue để sau này dễ tập hợp lại xem thư viện này dùng chỗ nào, cho việc gì. Nếu không có nó thì sao.
@tungnt-580 : Đề nghị chuẩn hóa Rest API theo bài viết sau:
https://hackernoon.com/restful-api-designing-guidelines-the-best-practices-60e1d954e7c9
Các cách để xác thực người dùng:
More details about model schema here
Hiện giờ ở phần file readme.md, đang bị lỗi tên thành viên đóng góp cho phần Backend. Cụ thể là tên "Vũ Thanh Tùng" cần sửa lại thành "Vũ Tùng". Mọi người xem giùm em nhé.
1.1. Collection "Users" (Long). Done on 2018.02.07
1.2. Collection "Post" (Vũ Tùng - Nguyễn Tùng). Done on 2018.02.07
1.3. Collection "Comments" (Trung). Done on 2018.02.07
1.4. Collection "Likes" (Thành)
1.2 Viết test cho Users
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.