MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cách sử dụng MongoDB Stitch trong ứng dụng Android

Với MongoDB Atlas, tất cả chỉ cần một vài cú nhấp chuột trên trình duyệt để thiết lập và chạy cụm MongoDB của riêng bạn trên đám mây. Bằng cách sử dụng nó, bạn có thể xây dựng các ứng dụng Android và iOS có thể phục vụ hàng triệu người dùng một cách hiệu quả. Tuy nhiên, bạn vẫn cần một máy chủ back-end có thể hoạt động như một trung gian giữa thiết bị của người dùng và cụm của bạn. Bạn cần nó để thực thi các chính sách bảo mật, thêm mức độ trừu tượng vào hoạt động CRUD của mình, lên lịch công việc và cho nhiều nhiệm vụ quan trọng khác.

  • MongoDBC Tạo một cụm cơ sở dữ liệu trong đám mây với MongoDB AtlasAshraff Hathibelagal

MongoDB Stitch là một nền tảng không máy chủ mạnh mẽ có thể đáp ứng tất cả các yêu cầu back-end của bạn. Ngoài việc cung cấp khả năng kiểm soát truy cập chi tiết vào dữ liệu trong cụm MongoDB Atlas của bạn, nó còn cung cấp môi trường máy tính dựa trên JavaScript mà bạn có thể sử dụng để thực hiện nhiều hoạt động phía máy chủ. Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách sử dụng nền tảng này trong ứng dụng Android.

Điều kiện tiên quyết

Để làm theo, bạn sẽ cần:

  • một tài khoản MongoDB Atlas
  • phiên bản Android Studio mới nhất
  • thiết bị hoặc trình mô phỏng chạy Android 5.0 trở lên

1. Tạo một Cụm bản đồ MongoDB

MongoDB Stitch được sử dụng với một cụm MongoDB Atlas. Bạn có thể tự do sử dụng một cụm mà bạn đã có, nhưng tôi khuyên bạn nên tạo một cụm mới cho hướng dẫn này.

Bắt đầu bằng cách đăng nhập vào tài khoản MongoDB Atlas của bạn và nhấn nút Xây dựng một cụm mới nút.

Trong màn hình tiếp theo, yêu cầu bạn cung cấp chi tiết cấu hình về cụm mới của bạn, hãy chọn bất kỳ nhà cung cấp đám mây nào, khu vực cung cấp cụm tầng miễn phí M0 và nhấn Tạo cụm nút.

Sau một vài phút, bạn sẽ có một nhóm cấp miễn phí hoàn toàn mới có tên Cluster0 .

2. Tạo ứng dụng MongoDB Stitch

Để liên kết ứng dụng Stitch với cụm của bạn, hãy nhấp vào Ứng dụng liên kết liên kết. Trong trang mở ra tiếp theo, nhấn nút Tạo ứng dụng mới nút.

Bây giờ bạn có thể nhập tên bạn muốn cho ứng dụng Stitch mới của mình. Sau khi bạn làm như vậy, hãy đảm bảo rằng cụm bên phải được chọn và nhấn nút Tạo nút.

Tại thời điểm này, ứng dụng Stitch của bạn — với hạn ngạch miễn phí rất lớn — đã sẵn sàng.

Ứng dụng có một ID duy nhất mà bạn sẽ cần khi phát triển ứng dụng Android của mình. Bạn có thể xem nó là gì bằng cách đi tới Khách hàng và mở Java (Android) tab.

3. Định cấu hình người dùng và quy tắc

Bằng cách sử dụng MongoDB Stitch, bạn có thể viết mã giao diện người dùng trên web và thiết bị di động một cách an toàn để tương tác với cụm MongoDB Atlas của mình. Điều này có thể thực hiện được vì bạn sẽ không phải bao gồm chuỗi kết nối chứa địa chỉ máy chủ, tên người dùng và mật khẩu của cơ sở dữ liệu trong mã của mình.

Người dùng cuối được xác thực của ứng dụng Stitch của bạn sẽ tự động có quyền truy cập vào cơ sở dữ liệu của bạn. Tuy nhiên, sử dụng một hoặc nhiều quy tắc, bạn có thể kiểm soát chính xác những tài liệu và trường nào họ có thể xem hoặc sửa đổi.

Để xác thực người dùng của bạn, Stitch cung cấp một số cơ chế xác thực, bao gồm xác thực ẩn danh, xác thực email / mật khẩu và xác thực bằng cách sử dụng các nhà cung cấp danh tính liên kết phổ biến. Trong hướng dẫn này, chúng tôi sẽ sử dụng xác thực ẩn danh. Để thiết lập, hãy chuyển đến Người dùng và mở Nhà cung cấp tab.

Tiếp theo, chọn tùy chọn Cho phép người dùng đăng nhập ẩn danh , bật tùy chọn này và nhấn nút Lưu nút.

Giả sử chúng tôi muốn cho phép người dùng ẩn danh của mình chỉ làm việc với những tài liệu mà họ sở hữu. Để tạo quy tắc như vậy, hãy chuyển đến Quy tắc phần.

Vì các quy tắc được áp dụng cho bộ sưu tập, hãy nhấn nút Thêm bộ sưu tập để tạo bộ sưu tập mới ngay bây giờ. Trong biểu mẫu xuất hiện, hãy đặt tên cho nó và chỉ định nó phải thuộc về cơ sở dữ liệu nào. Sau khi bạn làm như vậy, hãy chọn Người dùng chỉ có thể đọc và ghi dữ liệu của riêng họ mẫu quy tắc.

Khi chọn mẫu, bạn sẽ được nhắc chỉ định tên của trường trong tài liệu của mình, trong đó bạn sẽ lưu trữ ID xác thực Stitch được tạo tự động của người dùng. Stitch sẽ sử dụng trường này trong khi quyết định xem tài liệu có thuộc về người dùng hay không. Nói tên là user_id và gửi biểu mẫu.

Trong trang mở ra tiếp theo, giờ đây bạn có thể xác nhận rằng chỉ chủ sở hữu của các tài liệu trong bộ sưu tập của bạn mới có thể thực hiện các thao tác đọc và ghi trên chúng.

4. Chuẩn bị Dự án Android

Để có thể sử dụng Stitch trong dự án Android Studio của mình, bạn phải thêm SDK chính thức của nó làm implementation sự phụ thuộc vào ứng dụng app của bạn của mô-đun build.gradle tệp.

implementation 'org.mongodb:stitch-android-sdk:4.0.5'

Ngoài ra, bạn phải đề cập đến ID duy nhất của ứng dụng Stitch trong dự án của mình. Vì vậy, hãy truy cập vào res / giá trị / string.xml và thêm nó dưới dạng <string> thẻ.

<string name="my_app_id">mystitchapp-qwern</string>

5. Thiết lập kết nối

Với một bản sao của StitchAppClient bạn có thể dễ dàng sử dụng tất cả các tính năng mà nền tảng Stitch cung cấp. Để khởi tạo khởi tạo StitchAppClient , bạn phải gọi initializeDefaultAppClient() và chuyển ID ứng dụng Stitch của bạn cho nó. Điều này chỉ cần được thực hiện một lần trong ứng dụng của bạn, tốt nhất là ngay khi nó khởi động.

Khi nó đã sẵn sàng, bạn có thể gọi getDefaultAppClient() phương pháp để có được một tham chiếu đến khách hàng. Mã sau mà bạn có thể thêm vào onCreate() trong hoạt động của mình , chỉ cho bạn cách thực hiện:

Stitch.initializeDefaultAppClient(
    resources.getString(R.string.my_app_id)
)

val stitchAppClient = Stitch.getDefaultAppClient()

Trừ khi người dùng của bạn đăng nhập vào ứng dụng Stitch, bạn sẽ không thể thực hiện bất kỳ thao tác hữu ích nào trên cụm MongoDB Atlas của mình. Do đó, bây giờ bạn phải đăng nhập người dùng bằng cách gọi loginWithCredential() , phương thức này chạy không đồng bộ và trả về một Task vật. Ngoài ra, vì bạn đã chọn xác thực ẩn danh làm cơ chế xác thực trong bảng điều khiển web của Stitch, hãy đảm bảo rằng bạn chuyển một bản sao của AnonymousCredential lớp cho phương thức.

stitchAppClient.auth.loginWithCredential(AnonymousCredential())
        .addOnSuccessListener { 
            // More code here
        }

Tại thời điểm này, nếu bạn chạy ứng dụng, Stitch sẽ tự động đăng ký bạn làm người dùng mới, đồng thời đăng nhập bạn vào ứng dụng. Hơn nữa, nếu bạn quay lại bảng điều khiển web Stitch và mở Người dùng , bạn sẽ có thể thấy rằng một mục mới đã được thêm vào danh sách người dùng.

6. Chèn tài liệu

Sau khi xác thực thành công, bạn có thể tiếp tục và nhận một bản sao của RemoteMongoClient để bắt đầu tương tác với cụm MongoDB Atlas của bạn. Để làm như vậy, bạn có thể gọi getServiceClient() và chỉ định rằng tên của dịch vụ bạn muốn là "mongodb-atlas ". Đây là cách thực hiện:

val mongoClient = stitchAppClient.getServiceClient(
                    RemoteMongoClient.factory,
                    "mongodb-atlas"
                  )

Hãy nhớ rằng, nhờ quy tắc bạn đã tạo trước đó trong hướng dẫn này, người dùng của bạn chỉ có thể thực hiện các thao tác đọc và ghi trên dữ liệu của chính họ. Hơn nữa, người dùng của bạn bị giới hạn chỉ làm việc với cơ sở dữ liệu và bộ sưu tập mà bạn đã đề cập trong bảng điều khiển web Stitch.

Để tham chiếu đến cơ sở dữ liệu, hãy gọi getDatabase() và chuyển tên của nó cho nó. Tương tự, để nhận tham chiếu đến bộ sưu tập, hãy gọi getCollection() phương thức trả về RemoteMongoCollection đối tượng.

val myCollection = mongoClient.getDatabase("test")
                              .getCollection("my_collection")

Tất nhiên, những gì bạn thêm vào bộ sưu tập là tùy thuộc vào bạn. Để làm ví dụ, giả sử chúng tôi muốn thêm tài liệu chứa dấu thời gian của mọi thời điểm mà người dùng đã mở ứng dụng.

Để tạo một tài liệu BSON mới, bạn phải sử dụng hàm tạo của Document lớp. Bởi vì Document các đối tượng rất giống với bản đồ, bạn có thể sử dụng [] toán tử để thêm các cặp khóa-giá trị vào chúng.

Đoạn mã sau chỉ cho bạn cách tạo tài liệu mới và thêm dấu thời gian vào tài liệu đó:

val myFirstDocument = Document()
myFirstDocument["time"] = Date().time

Ngoài dữ liệu của bạn, tất cả tài liệu của bạn phải chứa ID xác thực Stitch của người dùng. Nếu không có nó, các hoạt động chèn của bạn sẽ không thành công. Để lấy ID xác thực, bạn có thể sử dụng trực tiếp id thuộc tính của it ngầm hiểu đối tượng có sẵn bên trong trình nghe thành công.

myFirstDocument["user_id"] = it.id

Bây giờ bạn có thể chèn tài liệu bằng cách gọi insertOne() phương pháp. (Bạn có thể đọc về insertOne() và các hoạt động ghi khác trong tài liệu MongoDB dành cho trình điều khiển Java.) Vì nó chạy không đồng bộ, bạn sẽ cần một trình xử lý thành công khác để kiểm tra xem hoạt động chèn có thành công hay không.

myCollection.insertOne(myFirstDocument)
            .addOnSuccessListener {
                Log.d("STITCH", "One document inserted")
            }

Nếu bạn chạy ứng dụng ngay bây giờ và kiểm tra Logcat của Android Studio , bạn sẽ có thể thấy một mục nhật ký trông giống như sau:

7. Chạy truy vấn

Bằng cách gọi find() phương thức của RemoteMongoCollection của bạn , bạn có thể tạo một truy vấn. (Bạn có thể tìm hiểu thêm về find() và các hoạt động truy vấn khác trong tài liệu trình điều khiển Java MongoDB.) Phương thức này trả về một RemoteFindIterable đối tượng, trên đó bạn có thể gọi nhiều phương thức hơn, chẳng hạn như sort()limit() để quản lý kết quả của truy vấn. Ví dụ:mã sau tạo truy vấn để tìm năm tài liệu cuối cùng do người dùng tạo:

val query = myCollection.find()
                        .sort( Document("time", -1) )
                        .limit(5)

Để thực sự chạy truy vấn, bạn có thể gọi into() phương thức này mong đợi một danh sách như một đối số. Như tên gọi của nó, nó tải các kết quả của truy vấn, không có gì khác ngoài Document các đối tượng, vào danh sách mà bạn chuyển cho nó. Nó chạy không đồng bộ, vì vậy bạn chỉ có thể bắt đầu sử dụng danh sách bên trong trình nghe thành công.

val result = mutableListOf<Document>()

query.into(result).addOnSuccessListener {
    // More code here    
}

Hiện tại, để mọi thứ trở nên đơn giản, hãy sử dụng TextView tiện ích con để hiển thị kết quả của truy vấn. Vì vậy, hãy thêm mã sau vào tệp XML bố cục hoạt động của bạn:

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/viewer"
    />

Quay lại bên trong trình nghe liên tục, bây giờ bạn có thể lặp lại danh sách và tạo một chuỗi nối có chứa tất cả các dấu thời gian. Theo tùy chọn, bạn có thể chuyển dấu thời gian vào getRelativeDateTimeString() phương thức của DateUtils để làm cho chúng dễ đọc hơn. Khi chuỗi đã sẵn sàng, bạn có thể chỉ định trực tiếp chuỗi đó cho TextView tiện ích con. Đây là cách thực hiện:

val output = StringBuilder("You opened this app: \n\n")

// Loop through the results
result.forEach {
    output.append(
        DateUtils.getRelativeDateTimeString(
            this@MainActivity,            
            it["time"] as Long, // Get value of 'time' field
            DateUtils.SECOND_IN_MILLIS,     
            DateUtils.WEEK_IN_MILLIS,
            0
        )
    ).append("\n")
}

// Update the TextView
viewer.text = output

Nếu bạn chạy lại ứng dụng, bây giờ bạn sẽ thấy một cái gì đó giống như thế này trên thiết bị của mình:


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. ClusterControl - Tất cả các tính năng nổi bật và cải tiến từ năm 2017

  2. Id Mongo dẫn đến các URL đáng sợ

  3. MongoDB không hoạt động. LỖI:dbpath (/ data / db) không tồn tại.

  4. 3 cách để chọn hàng có giá trị tối đa trong SQL

  5. Tổng quan về Xác thực lược đồ MongoDB