我正在尝试整合 WatermelonDb到我的 React Native 应用程序中。我收到一条错误消息,说 undefined 不是一个对象(正在评估 adapter.schema)
我关注了这个 GitHub 问题 https://github.com/Nozbe/WatermelonDB/issues/40 但它没有给出任何解决方案
我按照以下步骤进行安装
yarn add @nozbe/watermelondb
yarn add @nozbe/with-observables
yarn add --dev @babel/plugin-proposal-decorators
Run Code Online (Sandbox Code Playgroud)
我创建了一个.babelrc文件并添加了以下内容
{
"presets": ["module:metro-react-native-babel-preset"],
"plugins": [
["@babel/plugin-proposal-decorators", { "legacy": true }]
]
}
Run Code Online (Sandbox Code Playgroud)
我在 Xcode 中打开了我的项目
我创建了一个空swift文件,当被Xcode要求创建时Briding Header,我也创建了它
这是截图
我使用的是 React Native 0.60,所以我没有在终端中运行链接命令。
我还创建了一个单独的项目,我尝试react-native link @nozbe/watermelondb在其中运行React Native版本为 0.60.5 的应用程序,当在 iOS 模拟器上运行应用程序时,本机反应会抛出一个警告说链接会自动发生,因此为了取消链接我运行了react-native unlink @nozbe/watermelondb 但我仍然面临同样的问题,无论是链接还是不是。
这是我的示例代码
import {appSchema, tableSchema} from '@nozbe/watermelondb';
export const …Run Code Online (Sandbox Code Playgroud) 提前致谢
我在 React Native Android 中使用西瓜数据库,它返回未定义的集合。
const handleDB = async () => {
const myCollection = database.collections.get('data_items')
await database.action(async () => {
const newPost = await myCollection.create(post => {
post.ItemID = 9
post.ItemParentItem_ID = 8
})
})
}
Run Code Online (Sandbox Code Playgroud)
我从同一个功能组件中调用它
handleDB()
Run Code Online (Sandbox Code Playgroud)
有什么解决办法吗
我的数据库
import { Database } from "@nozbe/watermelondb";
import SQLiteAdapter from "@nozbe/watermelondb/adapters/sqlite";
import { dbModel } from "./"
import { mySchema} from "./schema"
const adapter = new SQLiteAdapter({
dbName: 'Northel',
schema: mySchema
});
export const database = new Database({
adapter, …Run Code Online (Sandbox Code Playgroud)