[解決済み】mongooseの_idと文字列の比較
2022-04-18 05:11:51
質問
私はいくつかのデータを取得し、このようなオブジェクトに固執するnode.jsアプリケーションを持っています。
var results = new Object();
User.findOne(query, function(err, u) {
results.userId = u._id;
}
その保存されたIDを元にif/thenを行うと、比較は決して真にはなりません。
if (results.userId == AnotherMongoDocument._id) {
console.log('This is never true');
}
2つのidをconsole.logすると、完全に一致します。
User id: 4fc67871349bb7bf6a000002 AnotherMongoDocument id: 4fc67871349bb7bf6a000002
これは何らかのデータ型の問題だと思うのですが、results.userIdを上記の比較が真となるようなデータ型に変換する方法がわからず、外注の脳みそ(通称Google)ではどうにもなりません。
どのように解決しますか?
Mongoose は mongodb-native ドライバーを使用しており、カスタム ObjectID タイプを使用します。ObjectID を比較するには
.equals()
メソッドを使用します。あなたの例だと
results.userId.equals(AnotherMongoDocument._id)
. また、ObjectID タイプには
toString()
メソッドを使用して、文字列化したObjectIDをJSON形式で保存したり、クッキーを保存したりすることができます。
を使用する場合
ObjectID = require("mongodb").ObjectID
(mongodb-nativeライブラリが必要です)。
results.userId
が有効な識別子であれば
results.userId instanceof ObjectID
.
などなど。
関連
-
[解決済み】E11000重複キーエラー mongodb mongooseのインデックス
-
[解決済み] TypeError: コールバックはnodejsの関数ではありません。
-
[解決済み] package.jsonのチルダ(~)とキャレット(^)の違いは何ですか?
-
[解決済み] npm package.jsonファイルのdependencies, devDependencies, peerDependenciesの違いは何ですか?
-
[解決済み] Node.jsを完全にアンインストールして、最初から再インストールする方法 (Mac OS X)
-
[解決済み] Node.jsのmodule.exportsの目的と使い方を教えてください。
-
[解決済み] Mongooseで文書を更新/アップサートするにはどうしたらいいですか?
-
[解決済み] Mongooseの"__v "フィールドとは?
-
[解決済み】Mongoose: findOneAndUpdateが更新されたドキュメントを返さない
-
[解決済み】Mongoose がサブドキュメントの配列アイテムに _id プロパティを作成しないようにする
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Node Version Manager のインストール - nvm コマンドが見つかりません。
-
[解決済み】ExpressJSとMeteorJSの比較【終了しました
-
[解決済み】「npm install」と「npm rebuild」の違いとは?
-
[解決済み】NPMインストールエラー:解析中の予期せぬJSON入力の終了 '...nt-webpack-plugin": "0'' 付近。
-
[解決済み] nodejsでfindAllのソート順を続編にする
-
[解決済み] Yarn にパッケージを強制的に再インストールさせるにはどうしたらいいですか?
-
[解決済み] DynamoDBで一括削除するにはどうしたらいいですか?
-
[解決済み] "app.use(express.cookieSession())" に "secret" オプションが必要です。
-
[解決済み] "致命的なエラーです。grunt "コマンドを実行すると、"Unable to find local grunt. "と表示されます。
-
[解決済み] Mongoose Schema がモデルとして登録されていません。