我一般对打字稿和Webdev都是陌生的,并且希望在打字稿项目中使用pouchdb来保存对象。我在寻找正确的方法时遇到了麻烦,而且文档非常稀缺。
我有一个Typescript对象,这些对象是从Document基类派生的,该基类具有必需的_id和_rev字段。我在正确的轨道上吗?远程关闭?
这是我尝试创建一个文档基类的尝试,该基类闻起来应该放在PouchDB数据库中-
[HttpPost("/api/account"), Authorize]
public void SaveUser([FromForm]UserModel info)
显然,我可以将其插入数据库中
import PouchDB from 'pouchdb';
// Base class for all objects which are persisted in database
export class Document {
readonly type: string;
readonly _id: string;
private _rev?: string; //set by database when document is inserted
constructor(type: string, id_suffix?: string) {
this.type = type;
let unique_id: string = uuid();
if (id_suffix === undefined) {
this._id = '${type}_${unique_id}'
}
else {
this._id = '${type}_${id_suffix}_${unique_id}'
}
}
}
有人可以帮我找回我的东西吗?
答案 0 :(得分:0)
这似乎起作用...
import PouchDB from 'pouchdb';
// Base class for all objects which are persisted in database
export class Document {
readonly type: string;
readonly _id: string;
private _rev?: string; //set by database when document is inserted
constructor(type: string, id_suffix?: string) {
this.type = type;
let unique_id: string = uuid();
if (id_suffix === undefined) {
this._id = '${type}_${unique_id}'
}
else {
this._id = '${type}_${id_suffix}_${unique_id}'
}
}
}
db.put(t);
let output = db.get<Document>(t._id).then(function (doc){
let x: Document = doc;
return x;
})
答案 1 :(得分:0)
对于记录,当您从普通对象(Pouchdb存储JSON对象)转换返回值(例如as Document
)时,您丢失了原型。因此,您必须从头开始重建实例。
例如:
let output = db.get<Document>(t._id).then(function (doc){
return new Document(
doc.type,
doc. id_suffix
);
})
或者按照建议的here,使用Object.assign
(尚未通过这种方式进行测试)。