반응형
node.js mongodb _id node-mongodb-native로 문서 선택
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로 선택하는 방법?
var mongo = require('mongodb');
var o_id = new mongo.ObjectID(theidID);
collection.update({'_id': o_id});
이것은 나를 위해 일한 접근 방식입니다.
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);
});
});
}
이제 이것을 사용할 수 있습니다.
var ObjectID = require('mongodb').ObjectID;
var o_id = new ObjectID("yourObjectIdString");
....
collection.update({'_id': o_id});
여기에서 문서를 볼 수 있습니다.
와 함께 native_parser:false
:
var BSON = require('mongodb').BSONPure;
var o_id = BSON.ObjectID.createFromHexString(theidID);
와 함께 native_parser:true
:
var BSON = require('mongodb').BSONNative;
var o_id = BSON.ObjectID.createFromHexString(theidID);
컨트롤러 파일의 Node.js 앱에서이 코드를 사용했으며 작동합니다.
var ObjectId = require('mongodb').ObjectId;
...
User.findOne({_id:ObjectId("5abf2eaa1068113f1e")})
.exec(function(err,data){
// do stuff
})
이전에 "mongodb"를 설치하는 것을 잊지 마시고, "presave"를 사용하여 bcrypt로 비밀번호를 암호화하는 경우 DB의 레코드를 수정할 때마다 비밀번호를 암호화하지 않도록주의하십시오.
대답은 ID로 전달하는 변수 유형에 따라 다릅니다. 쿼리를 수행하고 account_id를 ._id 속성으로 저장하여 개체 ID를 가져 왔습니다. 이 방법을 사용하면 mongo 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();
}
}
)
}
})
});
This is what worked for me. Using mongoDB
const mongoDB = require('mongodb')
Then at the bottom where I am making my express get call.
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));
});`
/* get id */
const id = request.params.id; // string "5d88733be8e32529c8b21f11"
/* set object id */
const ObjectId = require('mongodb').ObjectID;
/* filter */
collection.update({
"_id": ObjectId(id)
} )
반응형
'your programing' 카테고리의 다른 글
Sublime Text 2에서 Java 코드 컴파일 및 실행 (0) | 2020.10.06 |
---|---|
확장 된 PHP 클래스의 정적 호출에서 클래스 이름을 어떻게 얻을 수 있습니까? (0) | 2020.10.06 |
이미지를 찾을 수없는 경우 HTML (0) | 2020.10.06 |
Xcode는 시스템 키 체인을 사용하기 위해 암호를 계속 묻습니다. (0) | 2020.10.06 |
이 Java 코드에서 실제로하는 밑줄은 무엇입니까? (0) | 2020.10.06 |