Hướng dẫn mongodb stored javascript tutorial - hướng dẫn javascript được lưu trữ mongodb

Tài liệu về nhà → Hướng dẫn sử dụng MongoDBMongoDB Manual

Ghi chú

Không lưu trữ logic ứng dụng trong cơ sở dữ liệu. Có những hạn chế về hiệu suất để chạy JavaScript bên trong MongoDB. Mã ứng dụng cũng thường hiệu quả nhất khi nó chia sẻ kiểm soát phiên bản với chính ứng dụng.

Có một bộ sưu tập hệ thống đặc biệt có tên

cd realm-sync-tutorial/frontend/react-native.todo.flex
npm install
0 có thể lưu trữ các chức năng JavaScript để tái sử dụng.

Để lưu trữ chức năng, bạn có thể sử dụng

cd realm-sync-tutorial/frontend/react-native.todo.flex
npm install
1, như trong các ví dụ sau:

db.system.js.insertOne(
{
_id: "echoFunction",
value : function(x) { return x; }
}
);
db.system.js.insertOne(
{
_id : "myAddFunction" ,
value : function (x, y){ return x + y; }
}
);

  • Trường

    cd realm-sync-tutorial/frontend/react-native.todo.flex
    npm install
    2 giữ tên của hàm và là duy nhất cho mỗi cơ sở dữ liệu.

  • Trường

    cd realm-sync-tutorial/frontend/react-native.todo.flex
    npm install
    3 giữ định nghĩa hàm.

Các chức năng này, được lưu dưới dạng JavaScript loại BSON, có sẵn để sử dụng từ bất kỳ ngữ cảnh JavaScript nào, chẳng hạn như

cd realm-sync-tutorial/frontend/react-native.todo.flex
npm install
4 và
cd realm-sync-tutorial/frontend/react-native.todo.flex
npm install
5

Các chức năng được lưu dưới dạng JavaScript loại BSON không dùng nữa (với phạm vi), tuy nhiên, không thể được sử dụng bởi

cd realm-sync-tutorial/frontend/react-native.todo.flex
npm install
4 và
cd realm-sync-tutorial/frontend/react-native.todo.flex
npm install
5 bắt đầu trong MongoDB 4.4.

DOCS Home → Dịch vụ ứng dụng AtlasAtlas App Services

Trên trang này

  • Tổng quan
  • Trước khi bắt đầu
  • Bắt đầu với ứng dụng mẫu
  • Tạo ứng dụng mẫu
  • Cài đặt phụ thuộc
  • Xây dựng ứng dụng
  • Kiểm tra ứng dụng
  • Làm quen với ứng dụng mẫu
  • Ứng dụng Atlas
  • Phản ứng ứng dụng gốc
  • Thêm trường Cấp độ ưu tiên
  • Xác định mức độ ưu tiên
  • Cập nhật mô hình dữ liệu mục việc cần làm
  • Thêm một trình chọn ưu tiên
  • Chạy và kiểm tra ứng dụng
  • Cập nhật đăng ký đồng bộ hóa
  • Thêm chế độ chuyển đổi vào UI
  • Cập nhật đăng ký đồng bộ hóa
  • Kiểm tra ứng dụng
  • Làm quen với ứng dụng mẫu
  • Ứng dụng Atlas
  • Phản ứng ứng dụng gốc

Thêm trường Cấp độ ưu tiên

Xác định mức độ ưu tiên

Cập nhật mô hình dữ liệu mục việc cần làm

Ghi chú

Đưa ra phản hồi

Nó đã đi như thế nào? Sử dụng tab Đưa ra phản hồi ở phía dưới bên phải của trang để cho chúng tôi biết nếu hướng dẫn này là hữu ích hoặc nếu bạn có bất kỳ vấn đề nào.React Native Quick Start. It includes copyable code examples and the essential information that you need to set up a React Native app with Atlas Device Sync.

DOCS Home → Dịch vụ ứng dụng AtlasSetting up the development environment in the React Native docs.

Trên trang này

Tổng quan

  • Trước khi bắt đầu

  • Bắt đầu với ứng dụng mẫu

  • Tạo ứng dụng mẫu

Cài đặt phụ thuộc

Xây dựng ứng dụng

npx mongodb-realm-cli apps create \
--template react-native.todo.flex \
--name realm-sync-tutorial

Kiểm tra ứng dụng

Làm quen với ứng dụng mẫu

Ứng dụng Atlas

cd realm-sync-tutorial/frontend/react-native.todo.flex
npm install

Phản ứng ứng dụng gốcCocoaPods.

Kiểm tra ứng dụng

Làm quen với ứng dụng mẫu

Ứng dụng Atlas

Kiểm tra ứng dụng

Làm quen với ứng dụng mẫudevelopment environment setup guide and ensure that you've followed all the steps for your Development OS and Target OS.

Ứng dụng Atlas

  • Phản ứng ứng dụng gốc

  • Thêm trường Cấp độ ưu tiên

  • Xác định mức độ ưu tiên

Nếu bạn kết nối với cụm Atlas và truy vấn bộ sưu tập

db.Item.updateOne(
{ "_id": "630665dba3f53b578b75bd7e" },
{ "$set": { "isComplete": true }
})
1, bạn có thể xem dữ liệu của ứng dụng. Dữ liệu mới và thay đổi từ ứng dụng gốc React tự động đồng bộ hóa với bộ sưu tập này.

Mẹo

Tương tự, mọi thay đổi trong bộ sưu tập sẽ tự động đồng bộ hóa với ứng dụng gốc React. Hãy thử thay đổi trạng thái hoàn thành của một mục trong cụm của bạn - ứng dụng gốc React sẽ tự động cập nhật với giá trị mới bất cứ khi nào có kết nối mạng.

db.Item.updateOne(
{ "_id": "630665dba3f53b578b75bd7e" },
{ "$set": { "isComplete": true }
})

Mẹo

Hướng dẫn mongodb stored javascript tutorial - hướng dẫn javascript được lưu trữ mongodb

Tương tự, mọi thay đổi trong bộ sưu tập sẽ tự động đồng bộ hóa với ứng dụng gốc React. Hãy thử thay đổi trạng thái hoàn thành của một mục trong cụm của bạn - ứng dụng gốc React sẽ tự động cập nhật với giá trị mới bất cứ khi nào có kết nối mạng.

Bây giờ bạn có ứng dụng mẫu chạy, hãy đi sâu vào mã để xem những gì chúng tôi đang làm việc.

Ứng dụng mẫu bao gồm một ứng dụng Atlas được cấu hình đầy đủ trong thư mục

db.Item.updateOne(
{ "_id": "630665dba3f53b578b75bd7e" },
{ "$set": { "isComplete": true }
})
2. Nó có giá trị
db.Item.updateOne(
{ "_id": "630665dba3f53b578b75bd7e" },
{ "$set": { "isComplete": true }
})
3 duy nhất trong
db.Item.updateOne(
{ "_id": "630665dba3f53b578b75bd7e" },
{ "$set": { "isComplete": true }
})
4 mà các ứng dụng máy khách sử dụng để kết nối.

  • Nó cũng bao gồm các cấu hình được xác định trước sau:

  • Một nguồn dữ liệu được liên kết với cụm Atlas của bạn.

  • Một lược đồ cho bộ sưu tập

    db.Item.updateOne(
    { "_id": "630665dba3f53b578b75bd7e" },
    { "$set": { "isComplete": true }
    })
    1 phù hợp với lớp
    cd realm-sync-tutorial/frontend/react-native.todo.flex
    npm install
    8 trong ứng dụng gốc React.

  • Nhà cung cấp xác thực cho phép người dùng đăng ký và đăng nhập vào ứng dụng của bạn bằng email và mật khẩu.

Cấu hình đồng bộ linh hoạt với một vai trò phiên duy nhất cho phép người dùng đọc và chỉ viết dữ liệu của riêng họ.

Ứng dụng React Native là một máy khách di động được cấu hình đầy đủ có thể chạy trên các thiết bị iOS và Android. Nó nằm trong thư mục

db.Item.updateOne(
{ "_id": "630665dba3f53b578b75bd7e" },
{ "$set": { "isComplete": true }
})
7.@realm/react library. The library includes React hooks and components that let you connect to your Atlas App, read and write data, and automatically sync changes from other devices.

Ứng dụng sử dụng thư viện chính thức @realm/React. Thư viện bao gồm các móc nối và các thành phần cho phép bạn kết nối với ứng dụng Atlas của mình, đọc và ghi dữ liệu và tự động đồng bộ hóa các thay đổi từ các thiết bị khác.

Ứng dụng chứa một số tệp cấu hình và thư mục, nhưng bạn có thể bỏ qua chúng trừ khi bạn muốn tùy chỉnh ứng dụng. Đối với hướng dẫn này, bạn sẽ muốn làm quen với các thành phần React trong thư mục

db.Item.updateOne(
{ "_id": "630665dba3f53b578b75bd7e" },
{ "$set": { "isComplete": true }
})
8:

Tên tập tin

db.Item.updateOne(
{ "_id": "630665dba3f53b578b75bd7e" },
{ "$set": { "isComplete": true }
})
9

Sự mô tả

function createEnum(arr) {
arr.forEach((p, i) => arr[p] = i);
return arr;
}
// Priority.High === 1
// Priority[Priority.High] === "High"
export const Priority = createEnum([
"Severe",
"High",
"Medium",
"Low",
])
1

Lớp

cd realm-sync-tutorial/frontend/react-native.todo.flex
npm install
8, bao gồm lược đồ đối tượng của nó. Chúng tôi nhập lớp trong
function createEnum(arr) {
arr.forEach((p, i) => arr[p] = i);
return arr;
}
// Priority.High === 1
// Priority[Priority.High] === "High"
export const Priority = createEnum([
"Severe",
"High",
"Medium",
"Low",
])
1 để đưa nó vào lược đồ vương quốc của ứng dụng.

function createEnum(arr) {
arr.forEach((p, i) => arr[p] = i);
return arr;
}
// Priority.High === 1
// Priority[Priority.High] === "High"
export const Priority = createEnum([
"Severe",
"High",
"Medium",
"Low",
])
3

Các móc nối và các nhà cung cấp mà chúng tôi tạo và xuất để làm việc với Realm trong suốt ứng dụng.

function createEnum(arr) {
arr.forEach((p, i) => arr[p] = i);
return arr;
}
// Priority.High === 1
// Priority[Priority.High] === "High"
export const Priority = createEnum([
"Severe",
"High",
"Medium",
"Low",
])
5

Thành phần gốc của ứng dụng, mà chúng tôi kết thúc với các nhà cung cấp hook realm từ

function createEnum(arr) {
arr.forEach((p, i) => arr[p] = i);
return arr;
}
// Priority.High === 1
// Priority[Priority.High] === "High"
export const Priority = createEnum([
"Severe",
"High",
"Medium",
"Low",
])
1.

function createEnum(arr) {
arr.forEach((p, i) => arr[p] = i);
return arr;
}
// Priority.High === 1
// Priority[Priority.High] === "High"
export const Priority = createEnum([
"Severe",
"High",
"Medium",
"Low",
])
6

Đăng ký người dùng và biểu mẫu đăng nhập mà người dùng nhìn thấy khi lần đầu tiên mở ứng dụng.

function createEnum(arr) {
arr.forEach((p, i) => arr[p] = i);
return arr;
}
// Priority.High === 1
// Priority[Priority.High] === "High"
export const Priority = createEnum([
"Severe",
"High",
"Medium",
"Low",
])
9

Ứng dụng "Danh sách việc cần làm" chính mà người dùng tương tác sau khi họ đăng nhập. Nó truy vấn các đối tượng

cd realm-sync-tutorial/frontend/react-native.todo.flex
npm install
8 từ Realm và hiển thị chúng trong danh sách. Nó cũng bao gồm mã để tạo các đối tượng
cd realm-sync-tutorial/frontend/react-native.todo.flex
npm install
8 mới và lưu trữ chúng trong lĩnh vực.

// Priority.High === 1
// Priority[Priority.High] === "High"
export enum Priority {
Severe = 0,
High = 1,
Medium = 2,
Low = 3,
}
2

Một biểu mẫu UI cho phép chúng tôi nhập dữ liệu cho các đối tượng

cd realm-sync-tutorial/frontend/react-native.todo.flex
npm install
8 mới. Mã thực sự tạo ra các đối tượng mới là trong
function createEnum(arr) {
arr.forEach((p, i) => arr[p] = i);
return arr;
}
// Priority.High === 1
// Priority[Priority.High] === "High"
export const Priority = createEnum([
"Severe",
"High",
"Medium",
"Low",
])
6.

Một nút có thể tái sử dụng để đăng xuất một người dùng được xác thực.

Bây giờ bạn đã quen thuộc hơn với những gì đã được cung cấp trong ứng dụng mẫu, hãy viết một số mã để thực hiện một tính năng mới.

Đối với hướng dẫn này, chúng tôi sẽ thêm một thuộc tính "ưu tiên" mới vào mỗi đối tượng

cd realm-sync-tutorial/frontend/react-native.todo.flex
npm install
8. Điều này sẽ cho phép chúng tôi tổ chức việc làm bằng cách họ quan trọng như thế nào và cho phép chúng tôi chỉ tập trung vào những người quan trọng nhất.

Chúng tôi muốn cho phép một số lượng nhỏ các cấp độ ưu tiên được đặt tên và chúng tôi muốn dễ dàng sắp xếp các cấp độ. Để làm điều này, chúng tôi sẽ sử dụng hàm trợ giúp để xác định một đối tượng "enum" ánh xạ một tập hợp các tên cấp được đặt hàng đến và từ một số nguyên đại diện cho mức độ ưu tiên của chúng.

function createEnum(arr) {
arr.forEach((p, i) => arr[p] = i);
return arr;
}
// Priority.High === 1
// Priority[Priority.High] === "High"
export const Priority = createEnum([
"Severe",
"High",
"Medium",
"Low",
])

Thêm mã sau trực tiếp trong các câu lệnh nhập trong

// Priority.High === 1
// Priority[Priority.High] === "High"
export enum Priority {
Severe = 0,
High = 1,
Medium = 2,
Low = 3,
}
4:

Mẹo

Các mức độ ưu tiên trong enum được đặt hàng từ quan trọng nhất đến ít nhất. Giá trị chỉ số tương ứng cho mỗi cấp độ tăng từ quan trọng nhất,

// Priority.High === 1
// Priority[Priority.High] === "High"
export enum Priority {
Severe = 0,
High = 1,
Medium = 2,
Low = 3,
}
5, đến ít quan trọng nhất,
// Priority.High === 1
// Priority[Priority.High] === "High"
export enum Priority {
Severe = 0,
High = 1,
Medium = 2,
Low = 3,
}
6. Điều này có nghĩa là mức độ ưu tiên "cao hơn" (nghĩa là một mức quan trọng hơn) có giá trị chỉ số thấp hơn.enum to model this instead of using the helper function:

// Priority.High === 1
// Priority[Priority.High] === "High"
export enum Priority {
Severe = 0,
High = 1,
Medium = 2,
Low = 3,
}

Trong một ứng dụng TypeScript, bạn có thể xác định enum để mô hình hóa điều này thay vì sử dụng hàm trợ giúp:

Bây giờ chúng tôi có một

// Priority.High === 1
// Priority[Priority.High] === "High"
export enum Priority {
Severe = 0,
High = 1,
Medium = 2,
Low = 3,
}
7 xác định các giá trị có thể có của trường
// Priority.High === 1
// Priority[Priority.High] === "High"
export enum Priority {
Severe = 0,
High = 1,
Medium = 2,
Low = 3,
}
8. Tuy nhiên, chúng tôi vẫn phải xác định trường
// Priority.High === 1
// Priority[Priority.High] === "High"
export enum Priority {
Severe = 0,
High = 1,
Medium = 2,
Low = 3,
}
8 trong lớp
cd realm-sync-tutorial/frontend/react-native.todo.flex
npm install
8.

export class Item {
constructor({
_id = new BSON.ObjectId(),
isComplete = false,
owner_id,
priority = Priority.High, // Default to High priority if none is specified
}) {
this.isComplete = isComplete;
this._id = _id;
this.owner_id = owner_id
this.priority = priority
}
static schema = {
name: 'Item',
properties: {
_id: 'objectId',
isComplete: {type: 'bool', default: false},
summary: 'string',
owner_id: 'string',
priority: {
// Store the index value of the Priority enum rather than the name
type: 'int',
default: Priority.High
},
},
primaryKey: '_id',
};
}

Thêm các dòng sau vào mã của bạn trong // Priority.High === 1// Priority[Priority.High] === "High"export enum Priority { Severe = 0, High = 1, Medium = 2, Low = 3,}4 để thêm // Priority.High === 1// Priority[Priority.High] === "High"export enum Priority { Severe = 0, High = 1, Medium = 2, Low = 3,}8 vào mô hình:

Ghi chú

Tại sao điều này không đồng bộ

Tại thời điểm này, mô hình

cd realm-sync-tutorial/frontend/react-native.todo.flex
npm install
8 tự nhiên của bạn và lược đồ tương ứng của nó trong ứng dụng Atlas của bạn không còn đồng ý. Không sao đâu!

Thêm một thuộc tính vào một đối tượng Realm không phải là một thay đổi phá vỡ và do đó không yêu cầu đặt lại máy khách. Ứng dụng mẫu có chế độ phát triển được bật, do đó, các thay đổi đối với đối tượng Realm Client được phản ánh trong lược đồ phía máy chủ. Để biết thêm thông tin, hãy xem bật hoặc vô hiệu hóa chế độ phát triển và cập nhật lược đồ của bạn.

Đầu tiên, chúng tôi sẽ cài đặt một thư viện bên ngoài để thực hiện thành phần PROFITY PICKER. Chạy những điều sau đây trong thiết bị đầu cuối của bạn bên trong root dự án của bạn:

npm install @react-native-picker/picker

Nếu bạn đang xây dựng cho iOS, hãy đảm bảo liên kết các ca cao liên quan sau khi bạn đã cài đặt gói:

Mẹo

Bạn có thể cần xây dựng lại ứng dụng của mình sau khi cài đặt. Để làm như vậy, hãy dừng Bundler cho dự án của bạn và sau đó chạy lệnh Build:

Bây giờ gói đã được cài đặt đầy đủ, hãy cập nhật thành phần nhắc nhở mới để sử dụng trình chọn.

Thêm các nhập khẩu sau vào đầu

export class Item {
constructor({
_id = new BSON.ObjectId(),
isComplete = false,
owner_id,
priority = Priority.High, // Default to High priority if none is specified
}) {
this.isComplete = isComplete;
this._id = _id;
this.owner_id = owner_id
this.priority = priority
}
static schema = {
name: 'Item',
properties: {
_id: 'objectId',
isComplete: {type: 'bool', default: false},
summary: 'string',
owner_id: 'string',
priority: {
// Store the index value of the Priority enum rather than the name
type: 'int',
default: Priority.High
},
},
primaryKey: '_id',
};
}
6:

import {Picker} from '@react-native-picker/picker';
import {Priority} from './ItemSchema';

Sau đó, sửa đổi thành phần

export class Item {
constructor({
_id = new BSON.ObjectId(),
isComplete = false,
owner_id,
priority = Priority.High, // Default to High priority if none is specified
}) {
this.isComplete = isComplete;
this._id = _id;
this.owner_id = owner_id
this.priority = priority
}
static schema = {
name: 'Item',
properties: {
_id: 'objectId',
isComplete: {type: 'bool', default: false},
summary: 'string',
owner_id: 'string',
priority: {
// Store the index value of the Priority enum rather than the name
type: 'int',
default: Priority.High
},
},
primaryKey: '_id',
};
}
7:

  • Theo dõi

    // Priority.High === 1
    // Priority[Priority.High] === "High"
    export enum Priority {
    Severe = 0,
    High = 1,
    Medium = 2,
    Low = 3,
    }
    8 trong một cái móc trạng thái

  • Kết nối trạng thái với thành phần

    export class Item {
    constructor({
    _id = new BSON.ObjectId(),
    isComplete = false,
    owner_id,
    priority = Priority.High, // Default to High priority if none is specified
    }) {
    this.isComplete = isComplete;
    this._id = _id;
    this.owner_id = owner_id
    this.priority = priority
    }
    static schema = {
    name: 'Item',
    properties: {
    _id: 'objectId',
    isComplete: {type: 'bool', default: false},
    summary: 'string',
    owner_id: 'string',
    priority: {
    // Store the index value of the Priority enum rather than the name
    type: 'int',
    default: Priority.High
    },
    },
    primaryKey: '_id',
    };
    }
    9 mà bạn đã nhập

  • chuyển

    // Priority.High === 1
    // Priority[Priority.High] === "High"
    export enum Priority {
    Severe = 0,
    High = 1,
    Medium = 2,
    Low = 3,
    }
    8 cho trình xử lý

    npm install @react-native-picker/picker

    1

export function CreateToDoPrompt(props) {
const {onSubmit} = props;
const [summary, setSummary] = useState(null);
const [priority, setPriority] = useState(Priority.High);
return (
<View style={styles.modalWrapper}>
<Text h4 style={styles.addItemTitle}>
Add Item
</Text>
<Input placeholder="What do you want to do?" onChangeText={setSummary} />
<Picker
style={{width: '80%'}}
selectedValue={priority}
onValueChange={value => setPriority(value)}>
{Priority.map(priority => (
<Picker.Item
key={priority}
label={priority}
value={Priority[priority]}
/>
))}
</Picker>
<Button
title="Save"
buttonStyle={styles.saveButton}
onPress={() => onSubmit({summary, priority})}
/>
</View>
);
}

Trong

npm install @react-native-picker/picker

2, sửa đổi hàm

npm install @react-native-picker/picker

3 để chấp nhận và sử dụng
// Priority.High === 1
// Priority[Priority.High] === "High"
export enum Priority {
Severe = 0,
High = 1,
Medium = 2,
Low = 3,
}
8:

npx mongodb-realm-cli apps create \
--template react-native.todo.flex \
--name realm-sync-tutorial
0

Sau đó, sửa đổi trình xử lý gửi mới để chấp nhận mức

// Priority.High === 1
// Priority[Priority.High] === "High"
export enum Priority {
Severe = 0,
High = 1,
Medium = 2,
Low = 3,
}
8 và chuyển nó sang

npm install @react-native-picker/picker

3:

npx mongodb-realm-cli apps create \
--template react-native.todo.flex \
--name realm-sync-tutorial
1

Cuối cùng, sửa đổi từng mục danh sách việc cần làm để bao gồm

// Priority.High === 1
// Priority[Priority.High] === "High"
export enum Priority {
Severe = 0,
High = 1,
Medium = 2,
Low = 3,
}
8 trước

npm install @react-native-picker/picker

8:

npx mongodb-realm-cli apps create \
--template react-native.todo.flex \
--name realm-sync-tutorial
2

Ứng dụng của bạn bây giờ sẽ cho phép người dùng đặt mức độ ưu tiên cho mỗi mục việc cần làm mới.

Xây dựng lại ứng dụng và mở nó. Thêm một số mục việc cần làm mới để xác nhận rằng bạn có thể chọn mức độ ưu tiên và danh sách hiển thị mức độ ưu tiên của từng việc cần làm.

Hướng dẫn mongodb stored javascript tutorial - hướng dẫn javascript được lưu trữ mongodb

Giao thức SYNC thiết bị sử dụng mô hình linh hoạt trong đó mỗi máy khách đồng bộ hóa sử dụng truy vấn RQL tiêu chuẩn để chọn một tập hợp dữ liệu ứng dụng và sau đó đăng ký vào tập hợp con. Điều này tự động kéo phiên bản mới nhất của tất cả dữ liệu trong tập hợp con với thiết bị và đồng bộ hóa thay đổi dữ liệu giữa các thiết bị.

Ví dụ: ứng dụng mẫu bạn đang sử dụng có đăng ký tích hợp sau đây cho các mục mà người dùng hiện tại sở hữu:

npx mongodb-realm-cli apps create \
--template react-native.todo.flex \
--name realm-sync-tutorial
3

Bạn có thể tùy chỉnh đăng ký trên con ruồi để chỉ đồng bộ hóa dữ liệu mà ứng dụng của bạn cần. Hãy thêm một tính năng để chứng minh cách làm thế nào.

Đối với hướng dẫn này, chúng tôi sẽ thêm một nút cho phép chúng tôi chuyển đổi giữa hai "chế độ": một trong đó ứng dụng đồng bộ hóa tất cả các mục việc cần làm và một trong đó nó chỉ đồng bộ hóa các mục "quan trọng" với

// Priority.High === 1
// Priority[Priority.High] === "High"
export enum Priority {
Severe = 0,
High = 1,
Medium = 2,
Low = 3,
}
8 cao hoặc nghiêm trọng.

Đầu tiên, thêm một móc

import {Picker} from '@react-native-picker/picker';
import {Priority} from './ItemSchema';
0 vào thành phần
import {Picker} from '@react-native-picker/picker';
import {Priority} from './ItemSchema';
1 để theo dõi chế độ hiện tại:

npx mongodb-realm-cli apps create \
--template react-native.todo.flex \
--name realm-sync-tutorial
4

Sau đó, thêm một nút mới để chuyển chế độ vào cuối danh sách việc cần làm:

npx mongodb-realm-cli apps create \
--template react-native.todo.flex \
--name realm-sync-tutorial
5

Tại thời điểm này, ứng dụng có thể chuyển đổi các chế độ trong giao diện người dùng, nhưng chúng tôi không làm bất cứ điều gì khác để các chế độ giống hệt nhau về mặt chức năng. Hãy cập nhật đăng ký SYNC để chỉ đồng bộ hóa dữ liệu liên quan đến chế độ hiện tại.

Trong

import {Picker} from '@react-native-picker/picker';
import {Priority} from './ItemSchema';
2 đầu tiên của thành phần
import {Picker} from '@react-native-picker/picker';
import {Priority} from './ItemSchema';
1, hãy thêm mã kiểm tra chế độ hiện tại và nối thêm bộ lọc
// Priority.High === 1
// Priority[Priority.High] === "High"
export enum Priority {
Severe = 0,
High = 1,
Medium = 2,
Low = 3,
}
8 vào truy vấn nếu chế độ "Chỉ quan trọng" được hoạt động:

npx mongodb-realm-cli apps create \
--template react-native.todo.flex \
--name realm-sync-tutorial
6

Quan trọng

Đừng quên thêm

import {Picker} from '@react-native-picker/picker';
import {Priority} from './ItemSchema';
5 vào danh sách các phụ thuộc trong đối số thứ hai của
import {Picker} from '@react-native-picker/picker';
import {Priority} from './ItemSchema';
2.

Ứng dụng của bạn hiện được thiết lập để sửa đổi đăng ký đồng bộ hóa dựa trên chế độ hiện tại. Tuy nhiên, nếu bạn chạy ứng dụng và chuyển sang chế độ "Chỉ quan trọng", bạn sẽ thấy rằng danh sách không thay đổi và cảnh báo xuất hiện trong bảng điều khiển:

npx mongodb-realm-cli apps create \
--template react-native.todo.flex \
--name realm-sync-tutorial
7

Hướng dẫn mongodb stored javascript tutorial - hướng dẫn javascript được lưu trữ mongodb

Chúng tôi đang nhận được cảnh báo vì máy khách đồng bộ hóa chỉ có thể lọc đăng ký dựa trên trường đã cho nếu trường đó được liệt kê cụ thể là "trường có thể truy vấn" trong cấu hình đồng bộ hóa thiết bị của ứng dụng ATLAS của bạn.

Để làm cho mọi thứ hoạt động, chúng tôi cần thêm

// Priority.High === 1
// Priority[Priority.High] === "High"
export enum Priority {
Severe = 0,
High = 1,
Medium = 2,
Low = 3,
}
8 làm trường có thể truy vấn trong cấu hình đồng bộ hóa của ứng dụng Atlas.

Đầu tiên, hãy tìm thư mục

db.Item.updateOne(
{ "_id": "630665dba3f53b578b75bd7e" },
{ "$set": { "isComplete": true }
})
2 của ứng dụng mẫu và sửa đổi
import {Picker} from '@react-native-picker/picker';
import {Priority} from './ItemSchema';
9:

npx mongodb-realm-cli apps create \
--template react-native.todo.flex \
--name realm-sync-tutorial
8

Sau đó, chạy lệnh thiết bị đầu cuối sau trong thư mục

db.Item.updateOne(
{ "_id": "630665dba3f53b578b75bd7e" },
{ "$set": { "isComplete": true }
})
2 để triển khai cấu hình đồng bộ hóa được cập nhật:

npx mongodb-realm-cli apps create \
--template react-native.todo.flex \
--name realm-sync-tutorial
9

Khi cấu hình đồng bộ hóa được cập nhật của bạn được triển khai, ứng dụng của bạn đã hoàn tất và đầy đủ chức năng. Xin chúc mừng!

Xây dựng lại và chạy ứng dụng để đảm bảo mọi thứ hoạt động. Bạn sẽ có thể tạo, hoàn thành và xóa các mục việc cần làm cũng như chuyển sang và từ chế độ "chỉ quan trọng".

Hướng dẫn mongodb stored javascript tutorial - hướng dẫn javascript được lưu trữ mongodb

  • Đọc tài liệu SDK bản địa của chúng tôi.React Native SDK documentation.

  • Tìm các bài đăng trên blog định hướng cho nhà phát triển và hướng dẫn tích hợp trên trung tâm nhà phát triển MongoDB.MongoDB Developer Hub.

  • Tham gia Diễn đàn Cộng đồng MongoDB để học hỏi từ các nhà phát triển và chuyên gia kỹ thuật MongoDB khác.MongoDB Community forum to learn from other MongoDB developers and technical experts.

Ghi chú

Đưa ra phản hồi

Nó đã đi như thế nào? Sử dụng tab Đưa ra phản hồi ở phía dưới bên phải của trang để cho chúng tôi biết nếu hướng dẫn này là hữu ích hoặc nếu bạn có bất kỳ vấn đề nào.