복붙노트

[MONGODB] Node.js를 _id 노드 MongoDB를 네이티브로 문서를 선택하여 MongoDB

MONGODB

Node.js를 _id 노드 MongoDB를 네이티브로 문서를 선택하여 MongoDB

나는 ID로 문서를 선택하려고 해요

난 노력 했어:

collection.update({ "_id": { "$oid": + theidID } }

collection.update({ "_id": theidID }

collection.update({ "_id.$oid": theidID }}

또한 시도 :

collection.update({ _id: new ObjectID(theidID ) }

이것은 나에게 오류 500을 제공합니다 ...

var mongo = require('mongodb')
var BSON = mongo.BSONPure;
var o_id = new BSON.ObjectID(theidID );

collection.update({ _id: o_id }

이 작품의 없음. 어떻게 _id에 의해 선택?

해결법

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

    1.

    var mongo = require('mongodb');
    var o_id = new mongo.ObjectID(theidID);
    collection.update({'_id': o_id});
    
  2. ==============================

    2.나를 위해 일한이 접근.

    나를 위해 일한이 접근.

    var ObjectId = require('mongodb').ObjectID;
    
    var get_by_id = function(id, callback) {
      console.log("find by: "+ id);
      get_collection(function(collection) {
        collection.findOne({"_id": new ObjectId(id)}, function(err, doc) {
           callback(doc);
        });
      });
    }
    
  3. ==============================

    3.지금 당신은이를 사용할 수 있습니다 :

    지금 당신은이를 사용할 수 있습니다 :

    var ObjectID = require('mongodb').ObjectID;
    var o_id = new ObjectID("yourObjectIdString");
    ....
    collection.update({'_id': o_id});
    

    현재 문서를 볼 수 있습니다

  4. ==============================

    4.native_parser로 : 거짓 :

    native_parser로 : 거짓 :

    var BSON = require('mongodb').BSONPure;
    var o_id = BSON.ObjectID.createFromHexString(theidID);
    

    native_parser으로 : 사실 :

    var BSON = require('mongodb').BSONNative;
    var o_id = BSON.ObjectID.createFromHexString(theidID);
    
  5. ==============================

    5.난 그냥 컨트롤러 파일에서 Node.js를 응용 프로그램에서이 코드를 사용하고, 그것을 작동합니다 :

    난 그냥 컨트롤러 파일에서 Node.js를 응용 프로그램에서이 코드를 사용하고, 그것을 작동합니다 :

    var ObjectId = require('mongodb').ObjectId;
    ...
    User.findOne({_id:ObjectId("5abf2eaa1068113f1e")})
    .exec(function(err,data){
       // do stuff
    })
    

    전에 "MongoDB를"를 설치하는 것을 잊지, 당신은 "프리 세이브"와 bcrypt로 암호의 암호화를 사용하는 경우, 당신이 것을하지 말라하지 암호화 비밀번호 DB에서 레코드의 각 수정 후.

  6. ==============================

    6.대답은 당신이 ID로 전달하는 변수의 유형에 따라 달라집니다. 나는 쿼리를 수행하고 ._id 속성으로 내 ACCOUNT_ID를 저장하여 개체 ID를 당겼다. 당신은 단순히 몽고 ID를 사용하여 쿼리이 방법을 사용.

    대답은 당신이 ID로 전달하는 변수의 유형에 따라 달라집니다. 나는 쿼리를 수행하고 ._id 속성으로 내 ACCOUNT_ID를 저장하여 개체 ID를 당겼다. 당신은 단순히 몽고 ID를 사용하여 쿼리이 방법을 사용.

    // begin account-manager.js
    var MongoDB   = require('mongodb').Db;
    var dbPort      = 27017;
    var dbHost      = '127.0.0.1';
    var dbName      = 'sample_db';
    db = new MongoDB(dbName, new Server(dbHost, dbPort, {auto_reconnect: true}), {w: 1});
    var accounts = db.collection('accounts');
    
    exports.getAccountById = function(id, callback)
    { 
      accounts.findOne({_id: id},
        function(e, res) {  
        if (e) {
            callback(e)
        }
        else {
            callback(null, res)
        }
    
      });
    }
    // end account-manager.js
    
    // my test file
    var AM = require('../app/server/modules/account-manager');
    
    it("should find an account by id", function(done) {
    
    AM.getAllRecords(function(error, allRecords){
      console.log(error,'error')
      if(error === null) {
        console.log(allRecords[0]._id)
        // console.log('error is null',"record one id", allRecords[0]._id)
        AM.getAccountById(          
          allRecords[0]._id,
          function(e,response){
            console.log(response,"response")
            if(response) {
              console.log("testing " + allRecords[0].name + " is equal to " + response.name)
              expect(response.name).toEqual(allRecords[0].name);
              done();    
            } 
          }
        )  
      } 
    })
    

    });

  7. ==============================

    7.이것은 나를 위해 일한 것입니다. MongoDB를 사용

    이것은 나를 위해 일한 것입니다. MongoDB를 사용

    CONST MongoDB를 =는 ( 'MongoDB를')를 필요

    그럼 난 내 특급 GET 호출을 수행하고 맨 아래에.

    router.get('/users/:id', (req, res) => {
    const id = req.params.id;
    var o_id = new mongoDB.ObjectID(id);
    
    const usersCollection = database.collection('users');
    
    usersCollection.findOne({
      _id: o_id
    })
    
    .then(userFound => {
      if (!userFound){
        return res.status(404).end();
      }
      // console.log(json(userFound));
      return res.status(200).json(userFound)
    })
    .catch(err => console.log(err));
    
     });`
    
  8. ==============================

    8.

    /* get id */
    const id        = request.params.id; // string "5d88733be8e32529c8b21f11"
    
    /* set object id */
    const ObjectId  = require('mongodb').ObjectID;
    
    /* filter */
    collection.update({ 
        "_id": ObjectId(id)
    } )
    
  9. from https://stackoverflow.com/questions/4902569/node-js-mongodb-select-document-by-id-node-mongodb-native by cc-by-sa and MIT license