私は、DB内のドキュメントを数え、その番号を使って_id(最初の_idが0であると仮定して)を作成することで、モンゴースモデルの_idを動的に作成しようとしています。しかし、私の値から設定する_idを取得することはできません。私のコードは次のとおりです。Mongooseで_idをDB文書に設定する方法は?
//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' }
何が起こっているのか分かっている場合は、教えてください。あなたは(あなたがそれをコメントアウト)スキーマの一部として_id
プロパティを宣言する必要がある、または_id
オプションを使用してfalse
に設定のいずれか
db.collection.getIndexes()でこれを行った後でも、 '_id:1'が表示されています。これは正しい動作ですか? –
@SarasAryaはい、MongoDBは、そのタイプに関係なく、常に '_id'のインデックスを作成します([here](https://docs.mongodb.org/v3.0/core/index-single/#index-type- id))。 – robertklep