出于某种原因,我们在使用类本/原型进行反应时遇到了很多麻烦...我们不确定我们是否做错了,如果es6不是实际支持或什么。我们怎样才能在本机中使用类?显然,我们没有做正确的事。
我们尝试了什么
错误
无论我们尝试过什么,我们都无法导入我们创建的对象并实例化它。 Here is an example of the prototype we've set up in another stackoverflow post we made when trying to untangle the issue
以下是我们如何将其导入的示例。
import Db from '../localstorage/db/Db';
//var Db = require('../localstorage/db/Db');
const db = new Db();
使用require时,似乎import语句有效,并且我们在构造函数中分配的属性存在,但其他原型都不在对象中。
编辑1:以下是我们的类实现。我们在类之外实例化领域,因为在类as documented in this github issue内实例化时,领域似乎崩溃。
const realm = new Realm({
schema: [Wallet, WalletAddress, WalletTransaction, Log, APIWallet, APITransaction, APIAccount, Configuration],
path: config.db_path
});
export default class Db extends Object {
constructor() {
super();
this.realm = realm;
logger(2, realm.path);
}
//https://realm.io/docs/javascript/latest/#to-many-relationships
doOneToMany(one, many) {
many.forEach(m => {
this.write(() => {
one.push(m);
});
});
}
query(model, filter) {
let results = this.realm.objects(model);
if (filter) {
return results.filtered(filter);
}
return results;
}
insert(model, options) {
if (options == undefined && model instanceof Realm.Object) {
this.write(() => {
realm.create(model);
});
} else {
this.write(() => {
realm.create(model, options);
});
}
}
update(obj, options) {
this.write(() => {
Object.keys(options).map((key, attribute) => {
obj[key] = attribute;
});
});
}
del(model, obj) {
this.write(() => {
realm.delete(obj);
});
}
write(func) {
try {
realm.write(func);
} catch (e) {
logger(0, e);
throw new Error('Db.js :: Write operation failed ::', e);
}
}
close() {
Realm.close();
}
}
//module.exports = { Db };
答案 0 :(得分:0)
答案是我们在Logger.js文件中有一个循环依赖项,它需要Db.js而Db.js需要Logger才能进行有用的日志记录。删除循环依赖项会导致类和所有其他导入问题消失。