RxPromise

// RxPromise<T, R = Error> extends Observable<T>
const mockedPromise = new RxPromise(resolver);

其中 resolver 的类型为:

(resolve: (r: T) => void, reject: (r: R) => void) => void

Mongoose 查询改为 Observable 序列

import mongoose from 'mongoose';
import { RxPromise } from 'v0';

mongoose.Promise = RxPromise;

mongoose.connect('mongodb://localhost/test', { useNewUrlParser: true, useUnifiedTopology: true });
const kittySchema = new mongoose.Schema({
  name: String
});
const Kitten = mongoose.model('Kitten', kittySchema);

// 类型转化是必要的,目前我也不知道该怎么优化 Typescript 的返回类型重写。
// 如果您有合适的方法,请联系我 willin(at)willin.org
const s$ = <Observable<Record<string, unknown>[]>>(<any>Kitten.find().exec());
// or
// const s$ = (Kitten.find().exec()) as any) as Observable<Record<string, unknown>[]>;

s$.subscribe({
  next(v) {
    console.log(v);
  },
  complete() {
    console.log('ended');
  }
});
在 GitHub 上编辑此页面 article.updatedAt Wed, Aug 11, 2021