2015-04-04 20 views

Trả lời

1

PouchDB được xây dựng cho trình duyệt, vì vậy nó có thể có thể hoạt động trên React Native với một chút nỗ lực.

Bạn đã xem https://github.com/almost/react-native-sqlite chưa?

+0

Vâng, tôi đã nhìn thấy. Nó không phải là một lưu trữ tài liệu. – mrded

+0

Tôi có thể hỏi bạn có thể làm gì với một cửa hàng doc mà bạn không thể làm với SQLite không? –

+1

Lưu trữ dữ liệu phi cấu trúc và có thể tìm kiếm dễ dàng thông qua các bộ sưu tập của những dữ liệu này? – Moonwalker

6

Bạn có thể sử dụng asyncstorage-down bằng PouchDB. Thông thường the method for using LevelDOWN adapters in Node.js là như vậy:

var PouchDB = require('pouchdb'); 
var db = new PouchDB('mydb', {db: require('asyncstorage-down')}) 

tôi đã không kiểm tra này, mặc dù.

Chỉnh sửa: cũng may mắn cho bạn; rất nhiều công việc đã được đưa vào trong thời gian gần đây: pouchdb-async-storage. Mong đợi một bài đăng blog sớm về cách làm việc này.

+1

Lưu trữ pouchdb-async vẫn đang được duy trì? Có vẻ như không có cam kết nào trong 6 tháng. Tôi đang cân nhắc việc sử dụng điều này trong một quy mô lớn phản ứng ứng dụng bản địa, nhưng tôi sợ một chút về các vấn đề tương thích bản địa của pouchdb/phản ứng mà tôi đang tìm kiếm trên tất cả các web. – A2345sooted

+1

(Tôi là tác giả gốc.) Không, nó không phải là siêu duy trì. Nếu tôi có thời gian, tôi có thể sẽ đi theo tuyến đường SQLite thay vào đó, tức là https://github.com/nolanlawson/node-websql#custom-sqlite3-implementation kết hợp với https://github.com/almost/react- native-sqlite (có thể chỉ hoạt động, như một vấn đề của thực tế). – nlawson

0

Bạn có thể dễ dàng thực hiện PouchDB trên đầu trang trên SQLLite - nó có một số lựa chọn cấu hình. Bạn có thể cần một Plugin SQLite để làm cho nó hoạt động. Tôi đã làm điều này cho Cordova trong thực tế và nó hoạt động khá tốt. Tôi tin rằng PouchDB (đó là JavaScript thuần túy và do đó có thể được sử dụng out-of-the-box cho ReactNative) có một adapter làm việc với Plugin SQLite3 đầy đủ tính năng.

Phản ứng phiên bản Native của plugin này có sẵn ở đây:

https://github.com/andpor/react-native-sqlite-storage

Bản gốc Plugin liên kết Cordova có thể được tìm thấy trên github dự án là tốt.

+0

Tôi phải lấy lại điều này. Dường như có một loạt các vấn đề với yêu cầu về phía JS làm cho giải pháp dựa trên PouchDB không khả thi ngay bây giờ. – Moonwalker

+0

một số chỉ xuất bản mô-đun React Native PouchDB trên npm, sử dụng phản ứng-native-sqlite-storage làm plugin. https://www.npmjs.com/package/react-native-pouchdb – Moonwalker

1

Tôi đã gặp một số vấn đề khi PouchDB hoạt động dựa trên phản ứng gốc, nhưng không muốn cài đặt SQLLite. Vì vậy, tôi xây dựng một Adapter cho Async Storage.

GitHub npm

Nó Polyfills Packages thiếu cho React + thêm một adapter async lưu trữ trên cơ sở "asyncstorage xuống". Đúng là giúp.

1

Tôi đã thử sử dụng bộ điều hợp lưu trữ không đồng bộ của Stockulus (https://github.com/stockulus/pouchdb-react-native) nhưng gặp sự cố khi sao chép sang máy chủ CouchDB từ xa.

Bây giờ tôi đang sử dụng Phản ứng tự nhiên SQLite Storage (https://github.com/andpor/react-native-sqlite-storage) và PouchDB tùy chỉnh xây dựng mô hình (https://pouchdb.com/2016/06/06/introducing-pouchdb-custom-builds.html) như thế này:

'use strict'; 

import PouchDB from 'pouchdb-core' 

// POLYFILLS - adapted from https://github.com/pouchdb/pouchdb/issues/3787#issuecomment-234618747 
global.Buffer = global.Buffer || require('buffer').Buffer; 
global.atob = global.atob || require('atob'); 
global.btoa = global.btoa || require('btoa'); 
require('blob-polyfill'); 

import SQLite from 'react-native-sqlite-storage'; 
global.openDatabase = SQLite.openDatabase; // Expose for websql adapter 
GLOBAL.openDatabase = SQLite.openDatabase; 

PouchDB 
    .plugin(require('pouchdb-adapter-websql')) 
    .plugin(require('pouchdb-adapter-http')) 
    .plugin(require('pouchdb-replication')) 

export default PouchDB 

Tôi biết toàn cầu là xấu xí. Chúng tôi chỉ bắt đầu sử dụng nó và nhân rộng đang hoạt động tốt hơn. Chúng tôi cũng đã phải thực hiện một loạt các công cụ nút. Điều này được sử dụng bởi pouchdb-core nhưng không được chỉ định như là một phụ thuộc trong pouchdb-core. Sẽ yêu phản hồi.

Hiện đang sử dụng những gói:

"events": "^1.1.1", 
"pouchdb-adapter-http": "6.0.6", 
"pouchdb-adapter-websql": "6.0.6", 
"pouchdb-core": "6.0.6", 
"pouchdb-replication": "6.0.6", 
"atob": "^2.0.3", 
"blob-polyfill": "^1.0.20150320", 
"btoa": "^1.1.2", 
"buffer": "^5.0.0", 

Cảm ơn

Các vấn đề liên quan