Mongoose: 子スキーマが複数回使用されている場合、 `select:false`は子スキーマの一部として機能しません

作成日 2017年08月31日  ·  3コメント  ·  ソース: Automattic/mongoose

機能をリクエストしバグを報告しますか?
バグ

現在の動作は何ですか?

以下のスクリプトでは、親ドキュメントをプルすると、 child{}として返されますが、 child2{ field: 'test'}として返されます。そのChildSchema.fieldselect: falseます。

デバッガーを見ると、 child.fieldのみが選択されており、 child2.fieldは選択されていません。



const mongoose = require('mongoose');

mongoose.connect('mongodb://127.0.0.1/test');
const db = mongoose.connection;

db.once('open', async () => {
  try {
    const ChildSchema = new mongoose.Schema({
      field: {
        type: String,
        select: false,
      },
      _id: false,
    }, { id: false });

    const ParentSchema = new mongoose.Schema({
      child: ChildSchema,
      child2: ChildSchema,
    });
    const Parent = mongoose.model('Parent', ParentSchema);
    const ogParent = new Parent();
    ogParent.child = { field: 'test' };
    ogParent.child2 = { field: 'test' };
    await ogParent.save();

    const foundParent = await Parent.findById(ogParent._id).exec();
    console.log(foundParent);

    db.close();
  } catch (e) {
    console.log(e);
  }
});


node.js、mongoose、MongoDBのバージョンを教えてください。
4.11.8

confirmed-bug

最も参考になるコメント

@ wlingke 、2014年以降のマングースの最も微妙なバグをすべて見つけました:rocket :: 1st_place_medal:

image

全てのコメント3件

完全な再現スクリプトをありがとう、これはバグのように見えます

@wlingkeに2017™ベストマングースバグファインダーオブ

@ wlingke 、2014年以降のマングースの最も微妙なバグをすべて見つけました:rocket :: 1st_place_medal:

image

このページは役に立ちましたか?
0 / 5 - 0 評価