Angular 2 可以使用 Realm 吗?
Is it possible to use Realm with Angular 2?
我想尝试使用 Angular 2 应用程序的 Realm 移动平台,但我似乎无法在 Angular 2 中使用 Javascript 版本的 Realm。如果我能够在我的 Angular 2 应用程序中包含 Realm,我将如何设置它?
到目前为止,我已经 运行 npm install --save realm
成功,我的应用程序模块尝试导入该包并初始化所有内容。
import * as Realm from 'realm';
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { AppComponent } from './app.component';
Realm.Sync.User.login('http://local:9080', 'someUser', 'somePass', (e, user) => {
if(e) {
console.log(e);
return;
}
});
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
我收到以下错误和警告:
WARNING in ./~/realm/lib/index.js
23:11-26 Critical dependency: the request of a dependency is an expression
WARNING in ./~/realm/lib/index.js
77:27-48 Critical dependency: the request of a dependency is an expression
WARNING in ./~/realm/lib/user-methods.js
24:11-26 Critical dependency: the request of a dependency is an expression
ERROR in ./~/realm/lib/browser/index.js
Module not found: Error: Can't resolve 'react-native' in '/vagrant/angular-realm-test/node_modules/realm/lib/browser'
@ ./~/realm/lib/browser/index.js 21:0-45
@ ./~/realm/lib/index.js
@ ./src/app/app.module.ts
@ ./src/main.ts
@ multi webpack-dev-server/client?http://localhost:4200 ./src/main.ts
我很困惑,因为我已经在 Angular 2 个应用中毫无问题地包含了其他第三方库,例如 Firebase。我不完全确定这里发生了什么,所以非常感谢详细的解释。
我了解到,如果没有专业版或企业版,同步选项将不可用。从那以后,我尝试在组件中执行以下操作:
import * as Realm from 'realm';
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'app works!';
constructor() {
const CarSchema = {
name: 'Car',
properties: {
make: 'string',
model: 'string',
miles: {type: 'int', default: 0},
}
};
const PersonSchema = {
name: 'Person',
properties: {
name: 'string',
birthday: 'date',
cars: {type: 'list', objectType: 'Car'},
picture: {type: 'data', optional: true}, // optional property
}
};
// Initialize a Realm with Car and Person models
let realm = new Realm.Realm({schema: [CarSchema, PersonSchema]});
}
}
上面的代码给我同样的错误。
目前realm-js只能在node环境下运行。
让 realm 与前端框架一起工作的唯一方法是使用 Node.JS,幸运的是 electron!
如果你对这样的实现感到好奇,你可以尝试在这里克隆我的 repo of realm working with electron:
https://github.com/mbalex99/realm-electron
注:
- 我在 MacOSX、Linux 和 Windows
上使用得很好
- 同步功能仅适用于 MacOSX。除非你有专业版或企业版,否则你可以在 Linux 上使用它。 You can download a trial of it here
我想尝试使用 Angular 2 应用程序的 Realm 移动平台,但我似乎无法在 Angular 2 中使用 Javascript 版本的 Realm。如果我能够在我的 Angular 2 应用程序中包含 Realm,我将如何设置它?
到目前为止,我已经 运行 npm install --save realm
成功,我的应用程序模块尝试导入该包并初始化所有内容。
import * as Realm from 'realm';
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { AppComponent } from './app.component';
Realm.Sync.User.login('http://local:9080', 'someUser', 'somePass', (e, user) => {
if(e) {
console.log(e);
return;
}
});
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
我收到以下错误和警告:
WARNING in ./~/realm/lib/index.js
23:11-26 Critical dependency: the request of a dependency is an expression
WARNING in ./~/realm/lib/index.js
77:27-48 Critical dependency: the request of a dependency is an expression
WARNING in ./~/realm/lib/user-methods.js
24:11-26 Critical dependency: the request of a dependency is an expression
ERROR in ./~/realm/lib/browser/index.js
Module not found: Error: Can't resolve 'react-native' in '/vagrant/angular-realm-test/node_modules/realm/lib/browser'
@ ./~/realm/lib/browser/index.js 21:0-45
@ ./~/realm/lib/index.js
@ ./src/app/app.module.ts
@ ./src/main.ts
@ multi webpack-dev-server/client?http://localhost:4200 ./src/main.ts
我很困惑,因为我已经在 Angular 2 个应用中毫无问题地包含了其他第三方库,例如 Firebase。我不完全确定这里发生了什么,所以非常感谢详细的解释。
我了解到,如果没有专业版或企业版,同步选项将不可用。从那以后,我尝试在组件中执行以下操作:
import * as Realm from 'realm';
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'app works!';
constructor() {
const CarSchema = {
name: 'Car',
properties: {
make: 'string',
model: 'string',
miles: {type: 'int', default: 0},
}
};
const PersonSchema = {
name: 'Person',
properties: {
name: 'string',
birthday: 'date',
cars: {type: 'list', objectType: 'Car'},
picture: {type: 'data', optional: true}, // optional property
}
};
// Initialize a Realm with Car and Person models
let realm = new Realm.Realm({schema: [CarSchema, PersonSchema]});
}
}
上面的代码给我同样的错误。
目前realm-js只能在node环境下运行。 让 realm 与前端框架一起工作的唯一方法是使用 Node.JS,幸运的是 electron!
如果你对这样的实现感到好奇,你可以尝试在这里克隆我的 repo of realm working with electron: https://github.com/mbalex99/realm-electron
注:
- 我在 MacOSX、Linux 和 Windows 上使用得很好
- 同步功能仅适用于 MacOSX。除非你有专业版或企业版,否则你可以在 Linux 上使用它。 You can download a trial of it here