node.js - mongoose란 - 몽구스와_id로 찾기



mongodb (2)

나는 몽구스로 심플한 발견으로 어려움을 겪고있다.

해당 항목이 DB에 있음을 확인했습니다.

db.getCollection('stories').find({_id:'572f16439c0d3ffe0bc084a4'})

몽구스로

  Story.findById(topic.storyId, function(err, res) {
    logger.info("res", res);
    assert.isNotNull(res);
  });

그것을 찾지 못할 것이다.

나도 몽고로 변환을 시도했지만 여전히 찾을 수 없다. (비록 몽구스가 너에게 이것을 해줄지라도)

var mid = mongoose.Types.ObjectId(storyId);
let story = await Story.findOne({_id: mid}).exec();

나는 실제로 이것을 타이프 스크립트 (typescript)와 함께 사용하려고하고있다. 그러므로 기다리고있다.

Story.findById(id) 메서드를 시도했지만 아직 찾을 수 없습니다.

일반 _id 필드로 항목을 찾는 데 몇 가지 문제가 있습니까? _id가 스키마에 있어야합니까? (의사가 아니라고합니다)

스키마에서 다른 값으로 찾을 수 있습니다. _id 는 사용할 수 없습니다.

업데이트 : 이것에 대한 간단한 테스트를 작성했습니다.

describe("StoryConvert", function() {


  it("should read a list of topics", async function test() {
    let topics = await Topic.find({});

    for (let i = 0; i < topics.length; i ++) {
      let topic = topics[i];
    // topics.forEach( async function(topic) {
      let storyId = topic.storyId;
      let mid = mongoose.Types.ObjectId(storyId);
      let story = await Story.findOne({_id: mid});
      // let story = await Story.findById(topic.storyId).exec();
      // assert.equal(topic.storyId, story._id);
      logger.info("storyId", storyId);
      logger.info("mid", mid);
      logger.info("story", story);
      Story.findOne({_id: storyId}, function(err, res) {
        if (err) {
          logger.error(err);
        } else {
          logger.info("no error");
        }
        logger.info("res1", res);
      });

      Story.findOne({_id: mid}, function(err, res) {
        logger.info("res2", res);
      });

      Story.findById(mid, function(err, res) {
        logger.info("res3", res);
        // assert.isNotNull(res);
      });

    }

  });


});

그것은 물건을 돌려 줄 것이다.

Testing storyId 572f16439c0d3ffe0bc084a4

Testing mid 572f16439c0d3ffe0bc084a4

Testing story null

Testing no error

Testing res1 null

Testing res2 null

Testing res3 null

topic.storyId 가 다른 테이블에 매핑되는 문제를 일으키는 지 확실치 않은 문자열 인 것으로 나타났습니다. 나는 또한 어떤 타입 defs를 추가하려고 노력했다.

  storyId: {
    type: mongoose.Schema.Types.ObjectId,
    required: false
  }

https://src-bin.com



Answer #2

이 시도

 Story.findOne({_id:"572b19509dac77951ab91a0b"}, function(err, story){
                if (err){
                    console.log("errr",err);
                    //return done(err, null);
                }else{
                    console.log(story);
                }

 });




mongoose