验证 MongoDB/Mogoose 个保存的数组

Verify MongoDB/Mogoose saved array

我不知道如何在 MongoDB/Mongoose 保存操作后使用 findOne 方法。

    // itemrefSchema.js
    const itemrefSchema = new mongoose.Schema({
        pubRef: [{
          type: mongoose.Schema.Types.Mixed,
          ref: 'pubRefs'
        }],
        itemSpec: [{
          type: mongoose.Schema.Types.Mixed,
          ref: 'pubRefs'
        }],
        munInspect: [{
          type: mongoose.Schema.Types.Mixed,
          ref: 'pubRefs'
        }]
      },
      { minimize: false }
    );
    const ItemRef = mongoose.model('itemRefs', itemrefSchema);
    module.exports = ItemRef;

// modelTest.js
it.only('find a record', (done) => {
        let reference = new ItemRef({
            pubRef: [{'publication': 'military pub 1'}, {'address': '../media/a001.pdf'}],
            itemSpec: [{'publication': 'item spec 1'}, {'address': '../media/a001spec.pdf'}],
            munInspect: [{'publication': 'mun inspection 1'}, {'address': '../media/a001inspec.pdf'}]
        });
        reference.save().then(() => {
            /*ItemRef.
                find().
                where('pubRef').equals('pulication').
                select('publication address').
                exec(() => {
                    console.log(callback);
                    done();
                });
            */
        //});

            ItemRef.findOne({'ItemRef': 'pubRef'})
                .then((result) => {
                    console.log(result);
                    //assert(result.publication === 'DD Form 626');
                    done();
                });

            //console.log(result);
            //done();
        });
    });

我知道如果我取消注释我的 console.log(result) 并注释掉 findOne 方法,就会保存参考数据。我从 Mongoose 的 promise 中获取数据,如下所示:

{ _id: 5b1ef810e8609509bc81fa19,
  createdAt: 2018-06-11T22:30:40.216Z,
  updatedAt: 2018-06-11T22:30:40.216Z,
  __v: 0,
  munInspect:
   [ { publication: 'mun inspection 1' },
     { address: '../media/a001inspec.pdf' } ],
  itemSpec:
   [ { publication: 'item spec 1' },
     { address: '../media/a001spec.pdf' } ],
  pubRef:
   [ { publication: 'military pub 1' },
     { address: '../media/a001.pdf' } ] }
    √ find a record (150ms)

我试图通过选择 munInspect 中的任何一个并验证 MongoDB 保存了内容来构建该断言。当我执行 findOne 方法时,我得到 'null' 的响应。任何的意见都将会有帮助。我哪里错了?

你可以试试下面的保存功能

reference.save().then((saveresult) => {
    //or you can directly print result like below

    console.log(saveresult);
    ItemRef.findOne({ '_id': saveresult._id })
        .then((result) => {
            //Now you can check your desired result
            console.log(result);
            done();
        });
});