[解決済み] Typescript流のMongoose...?
2022-05-13 17:56:25
質問
MongooseモデルをTypescriptで実装しようとしています。 Googleで調べても、ハイブリッドなアプローチ(JSとTSの組み合わせ)しか出てきません。 私の素朴なアプローチでは、JSなしでUserクラスを実装するにはどうしたらよいでしょうか?
荷物なしでIUserModelをできるようにしたいです。
import {IUser} from './user.ts';
import {Document, Schema, Model} from 'mongoose';
// mixing in a couple of interfaces
interface IUserDocument extends IUser, Document {}
// mongoose, why oh why '[String]'
// TODO: investigate out why mongoose needs its own data types
let userSchema: Schema = new Schema({
userName : String,
password : String,
firstName : String,
lastName : String,
email : String,
activated : Boolean,
roles : [String]
});
// interface we want to code to?
export interface IUserModel extends Model<IUserDocument> {/* any custom methods here */}
// stumped here
export class User {
constructor() {}
}
どのように解決するのですか?
私のやり方はこうです。
export interface IUser extends mongoose.Document {
name: string;
somethingElse?: number;
};
export const UserSchema = new mongoose.Schema({
name: {type:String, required: true},
somethingElse: Number,
});
const User = mongoose.model<IUser>('User', UserSchema);
export default User;
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] JavaScriptでメールアドレスを検証するのに最適な方法は何ですか?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] package.jsonのチルダ(~)とキャレット(^)の違いは何ですか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] npm installの-saveオプションは何ですか?
-
[解決済み】TypeScriptのインターフェースと型について
-
[解決済み] DataURLからBlob?
-
[解決済み] jQueryを使って、ターゲット要素のクリック座標を取得する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Typescript コンパイルエラー: error TS1109: 期待される式
-
[解決済み】TypeScriptのインターフェースと型について
-
[解決済み] event.targetを使用して、要素の親要素をターゲットにすることができますか?
-
[解決済み] マングース ユーザーの全リストを取得する
-
[解決済み] SVG のテキスト要素の幅を取得する
-
[解決済み] JavaScript 配列 中括弧と大括弧
-
[解決済み] バックボーンビュー。親からイベントを継承・拡張する
-
[解決済み] Math.random()を呼び出す関数は純粋か?
-
[解決済み] ネストされたJSONオブジェクト - すべてに配列を使用しなければならないのか?
-
[解決済み] JavaScriptでユーザーのローカルLANのIPアドレスを取得できるか?