79

IN nodejs、mongodb、mongoosejs を orm として使用

私はこれをやっています

私はモデル、ユーザーを持っています

User.findOne({username:'someusername'}).exec(function(err,user){
console.log(user) //this gives full object with something like {_id:234234dfdfg,username:'someusername'}
//but

console.log(user._id) //give undefined.
})

なんで?そして、_idを文字列に取得する方法は?

4

12 に答える 12

128

これを試して:

user._id.toString()

MongoDB ObjectIdは12バイトのUUIDであり、長さが24文字のHEX文字列表現として使用できます。consoleを使用して表示するには、文字列に変換する必要がありますconsole.log

だから、あなたはこれをしなければなりません:

console.log(user._id.toString());
于 2012-12-18T13:05:40.613 に答える
24

アンダースコアを削除して、再試行してください。

console.log(user.id)

また、ここに表示されているように、idから返される値はすでに文字列です。

于 2012-11-09T03:46:37.373 に答える
21

私はmongojsを使用しており、次の例があります。

db.users.findOne({'_id': db.ObjectId(user_id)  }, function(err, user) {
   if(err == null && user != null){
      user._id.toHexString(); // I convert the objectId Using toHexString function.
   }
})
于 2013-03-20T04:24:46.597 に答える
17

これを試して:

objectId.str;

ドキュメントを参照してください。

于 2013-11-04T14:39:51.907 に答える
8

Mongoose を使用している場合、id を 16 進文字列として確実に保持する唯一の方法は次のようになります。

object._id ? object._id.toHexString():object.toHexString();

これは、object._id がオブジェクトにデータが取り込まれている場合にのみ存在し、オブジェクトが ObjectId でない場合にのみ存在するためです。

于 2015-12-23T23:47:37.970 に答える
1

によって返される結果はfind配列です。

代わりにこれを試してください:

console.log(user[0]["_id"]);
于 2012-11-09T00:33:52.163 に答える
0

Mongoose 5.4 以降では、SchemaType ゲッターを使用して ObjectId を String に変換できます。

Mongoose 5.4 の新機能: グローバル SchemaType 構成を参照してください。

于 2021-10-25T20:13:56.203 に答える