복붙노트

[MONGODB] 어떻게 몽구스의 DB 문서에 _id 설정하는 방법?

MONGODB

어떻게 몽구스의 DB 문서에 _id 설정하는 방법?

나는 동적으로 DB에 문서를 계산하여 내 몽구스 모델 _id의를 만들려고하고 _ID를 만드는 데 그 번호를 사용하고 (첫 번째 _id 가정은 0이다). 그러나, 나는 내 값으로부터 세트에 _id를 얻을 수 없습니다. 여기 내 코드는 :

//Schemas
var Post = new mongoose.Schema({
    //_id: Number,
    title: String,
    content: String,
    tags: [ String ]
});

var count = 16;

//Models
var PostModel = mongoose.model( 'Post', Post );

app.post( '/', function( request, response ) {

    var post = new PostModel({
        _id: count,
        title: request.body.title,
        content: request.body.content,
        tags: request.body.tags
    });

    post.save( function( err ) {
        if( !err ) {
            return console.log( 'Post saved');
        } else {
            console.log( err );
        }
    });

    count++;

    return response.send(post);
});

나는 _id에게 다양한 방법을 설정하려고했지만, 나를 위해 작동하지 않습니다. 여기에 최신의 오류는 다음과 같습니다

{ message: 'Cast to ObjectId failed for value "16" at path "_id"',
  name: 'CastError',
  type: 'ObjectId',
  value: 16,
  path: '_id' }

당신은 무슨 일이 일어나고 있는지 알고 있다면 알려 주시기 바랍니다.

해결법

  1. ==============================

    1.당신 스키마의 일부로서 _id 속성을 선언하거나 필요하면 문자열로 캐스트 _id에 가상 게터를 생성 ID 옵션을 사용하고 있습니다 ((당신이 그것을 주석), 또는 _ID 옵션을 사용하고 false로 설정 하지만 여전히 따라서 _id OBJECTID 속성, 당신이 얻을 주조 오류를) 만들었습니다.

    당신 스키마의 일부로서 _id 속성을 선언하거나 필요하면 문자열로 캐스트 _id에 가상 게터를 생성 ID 옵션을 사용하고 있습니다 ((당신이 그것을 주석), 또는 _ID 옵션을 사용하고 false로 설정 하지만 여전히 따라서 _id OBJECTID 속성, 당신이 얻을 주조 오류를) 만들었습니다.

    하나이 그래서 :

    var Post = new mongoose.Schema({
        _id: Number,
        title: String,
        content: String,
        tags: [ String ]
    });
    

    아니면 이거:

    var Post = new mongoose.Schema({
        title: String,
        content: String,
        tags: [ String ]
    }, { _id: false });
    
  2. ==============================

    2.@의 robertklep의 첫 번째 코드 조각이 나를 위해 일을하지 않습니다 (4 몽구스), 또한 장애인 _id 필요

    @의 robertklep의 첫 번째 코드 조각이 나를 위해 일을하지 않습니다 (4 몽구스), 또한 장애인 _id 필요

    var Post = new mongoose.Schema({
      _id: Number,
      title: String,
      content: String,
      tags: [ String ]
    }, { _id: false });
    

    이것은 나를 위해 작동

  3. ==============================

    3.사용자 정의 몽구스에 _id 작성 및 몽고 _id로 해당 ID를 저장합니다. 사용 몽고이 같은 문서를 저장하기 전에 _ID.

    사용자 정의 몽구스에 _id 작성 및 몽고 _id로 해당 ID를 저장합니다. 사용 몽고이 같은 문서를 저장하기 전에 _ID.

    const mongoose = require('mongoose');
        const Post = new mongoose.Schema({
              title: String,
              content: String,
              tags: [ String ]
            }, { _id: false });
    
    // request body to save
    
    let post = new PostModel({
            _id: new mongoose.Types.ObjectId().toHexString(), //5cd5308e695db945d3cc81a9
            title: request.body.title,
            content: request.body.content,
            tags: request.body.tags
        });
    
    
    post.save();
    
  4. from https://stackoverflow.com/questions/19760829/how-to-set-id-to-db-document-in-mongoose by cc-by-sa and MIT license