由于CouchDB没有任何集合,我向我的实体添加了自定义type
属性。现在我想过滤该属性上的所有实体,例如通过{type:'user'}
获取所有用户。在couchdb-doc中我发现了一个method called 'find()',它也在纳米类型中实现,但在couchdb-nano中缺少文档。根据定义,我写了以下代码:
class UserModel {
type: string = 'User';
name: string = '';
mail: string = '';
}
let db = <nano.DocumentScope<UserModel>>nano("http://localhost:5984/testdb");
let query: nano.MangoQuery = { selector: { type: "User" } };
db.find(query, (cb:nano.Callback<nano.MangoResponse<UserModel>>) => {
// How to get the results here? cb is a callback, but this doesn't make sense
});
对我来说,我得到一个回调是没有意义的。我怎样才能得到结果?
尝试使用某种回调:
db.find(query, (users: nano.MangoResponse<UserModel>) => {
console.log(users);
});
但是users
未定义,尽管过滤器{ selector: { type: "User" } }
在Project Fauxton中运行良好。
答案 0 :(得分:1)
如nano documentation中所述:
在nano中,回调函数总是接收三个参数:
- 错误 - 错误,如果有的话。
- body - 来自CouchDB的HTTP响应主体,如果没有错误。 JSON解析了主体,非JSON响应的二进制文件。
- header - 来自CouchDB的HTTP响应头,如果没有错误。
醇>
因此,在db.find
的情况下,您将拥有:
db.find(query, (err, body, header) => {
if (err) {
console.log('Error thrown: ', err.message);
return;
}
console.log('HTTP header received: ', header)
console.log('HTTP body received: ', body)
});
我没有使用typescript
,但我认为您可以对typescript
执行相同操作。