macOSで最新バージョンのNode.jsを実行します。 また、最新バージョンのマングースを実行しています。
文字通りデバッグする方法がないError: cyclic dependency detected
を見る。 すべてがマングースを指しています。 助言がありますか? 今日から起こり始めました。
/Users/nickparsons/Code/winds-2.0/api/src/node_modules/mongoose/lib/utils.js:417
throw err;
^
Error: cyclic dependency detected
at serializeObject (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:296:33)
at serializeInto (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:618:17)
at serializeObject (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/Users/nickparsons/Code/winds-2.0/api/src/node_modules/bson/lib/bson/parser/serializer.js:776:17)
ここでの元の問題は何でしたか?
オブジェクト全体ではなく、更新が必要なフィールドを含めるようにしてください。
私もこの問題を抱えています。同じコード行です。
C:\ Users \ Rowan \ Onedrive \ code \ react \ gradeable \ frontendnode_modules \ mongoose \ lib \ utils.js:417
エラーをスローします。
@ nparsons08Ping 。 それがあなたの側の問題であることが判明したのか、回避策を見つけたのか(以前のマングースバージョンへのダウングレード以外)、または別の方法で解決したのかを教えてください。
ここでも同じで、追跡する方法はまったくありません。
エラーが発生したり消えたりします。
Error: cyclic dependency detected
at serializeObject (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:296:33)
at serializeInto (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at serializeObject (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:618:17)
at serializeObject (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:308:18)
at serializeInto (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:776:17)
at BSON.serialize (/var/www/node_modules/mongoose/node_modules/bson/lib/bson/bson.js:58:27)
at Query.toBin (/var/www/node_modules/mongoose/node_modules/mongodb-core/lib/connection/commands.js:141:25)
at serializeCommands (/var/www/node_modules/mongoose/node_modules/mongodb-core/lib/connection/pool.js:1050:43)
at Pool.write (/var/www/node_modules/mongoose/node_modules/mongodb-core/lib/connection/pool.js:1230:3)
at executeWrite (/var/www/node_modules/mongoose/node_modules/mongodb-core/lib/wireprotocol/3_2_support.js:80:10)
at WireProtocol.insert (/var/www/node_modules/mongoose/node_modules/mongodb-core/lib/wireprotocol/3_2_support.js:91:3)
at Server.insert (/var/www/node_modules/mongoose/node_modules/mongodb-core/lib/topologies/server.js:747:35)
at executeWriteOperation (/var/www/node_modules/mongoose/node_modules/mongodb-core/lib/topologies/mongos.js:899:22)
at Mongos.insert (/var/www/node_modules/mongoose/node_modules/mongodb-core/lib/topologies/mongos.js:955:3)
at Mongos.insert (/var/www/node_modules/mongoose/node_modules/mongodb/lib/topologies/topology_base.js:315:25)
at /var/www/node_modules/mongoose/node_modules/mongodb/lib/db.js:1093:21
at handleCallback (/var/www/node_modules/mongoose/node_modules/mongodb/lib/utils.js:128:55)
現在、同じ問題が発生しています。 これを解決する方法についてのアイデア。
「現在同じ問題が発生している」という理由でこれをロックすると、あいまいすぎて実行できなくなります。 新しい問題を開いて、問題テンプレートに従ってください。
みんな、私は原因を見つけたと思います-どうやらそれはmongodb3.6に関連しています(私は最近3.2から3.6にアップグレードし、mongooseも5.xにアップグレードしました)...
そのため、アプリを実行できなくなり、これらの循環依存エラーが発生していました...私にとって有効な唯一の回避策は、 autoIndex: false
をmongoose.connect
に追加することautoIndex: false
が、そのため、後でアプリケーションでensureIndex()
を使用した後でも、インデックスが作成されなくなりました。最終的には、同じ循環依存エラーが発生します。
簡単に言うと、モデル内からすべての属性INDEXを削除し、後でモデルに追加することで、次のように修正できました。
前
client: { type: ObjectId, ref: 'tsCli', required: true, index: true },
後
client: { type: ObjectId, ref: 'tsCli', required: true },
[...]
Schema.index({ client: 1 });
そして、さらに重要なことに、複合インデックスから属性INDEXを削除します。
前
Schema.index({ client: 1, code: 1 }, { unique: true, index: true, partialFilterExpression: { code: { $type: String } } });
後
Schema.index({ client: 1, code: 1 }, { unique: true, partialFilterExpression: { code: { $type: String } } });
これが他の人に役立つことを願っています
乾杯
配列にインデックスを追加しようとすると、特にこの問題が発生します。
...
tags: {
type: [String],
index: true
}
...
そのprop / indexをスキーマに追加するだけで、この問題が発生します
ちょっと@AndrewBarba ..フィールドではなくスキーマに、前述のようにインデックスを追加してみて、それが機能するかどうかを確認してください
@gustvao私は実際に最初にそれを試しましたが、運がありません:(
@AndrewBarbaこれと同じ問題が発生しました。 MongoClientを使用して私は使用しなければなりませんでした:
Collection.createIndexes([
{
key: { email: 1 },
name: 'user_email',
unique: true
}
])
お役に立てれば。
テキストインデックスを追加しようとすると、次のようになります。
/Users/ashish/dictionary/js_server/node_modules/mongoose/lib/utils.js:429
throw err;
^
Error: cyclic dependency detected
at serializeObject (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:331:34)
at serializeInto (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:934:17)
at serializeObject (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:345:18)
at serializeInto (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:934:17)
at serializeObject (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:345:18)
at serializeInto (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:934:17)
at serializeObject (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:345:18)
at serializeInto (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:934:17)
at serializeObject (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:345:18)
at serializeInto (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:934:17)
at serializeObject (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:345:18)
at serializeInto (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:934:17)
at serializeObject (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:345:18)
at serializeInto (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:934:17)
at serializeObject (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:345:18)
at serializeInto (/Users/ashish/dictionary/js_server/node_modules/bson/lib/bson/parser/serializer.js:934:17)
Emitted 'error' event at:
at done (/Users/ashish/dictionary/js_server/node_modules/mongoose/lib/model.js:1051:13)
at /Users/ashish/dictionary/js_server/node_modules/mongoose/lib/model.js:1093:16
at /Users/ashish/dictionary/js_server/node_modules/mongoose/lib/utils.js:424:16
at err (/Users/ashish/dictionary/js_server/node_modules/mongodb/lib/utils.js:415:14)
at session.endSession (/Users/ashish/dictionary/js_server/node_modules/mongodb/lib/utils.js:399:27)
at ClientSession.endSession (/Users/ashish/dictionary/js_server/node_modules/mongodb-core/lib/sessions.js:72:41)
at executeCallback (/Users/ashish/dictionary/js_server/node_modules/mongodb/lib/utils.js:397:17)
at err (/Users/ashish/dictionary/js_server/node_modules/mongodb/lib/utils.js:415:14)
at executeCallback (/Users/ashish/dictionary/js_server/node_modules/mongodb/lib/utils.js:404:25)
at err (/Users/ashish/dictionary/js_server/node_modules/mongodb/lib/utils.js:415:14)
at executeCallback (/Users/ashish/dictionary/js_server/node_modules/mongodb/lib/utils.js:404:25)
at handleCallback (/Users/ashish/dictionary/js_server/node_modules/mongodb/lib/utils.js:128:55)
at /Users/ashish/dictionary/js_server/node_modules/mongodb/lib/db.js:1068:25
at executeWrite (/Users/ashish/dictionary/js_server/node_modules/mongodb-core/lib/wireprotocol/3_2_support.js:82:5)
at WireProtocol.insert (/Users/ashish/dictionary/js_server/node_modules/mongodb-core/lib/wireprotocol/3_2_support.js:91:3)
at Server.insert (/Users/ashish/dictionary/js_server/node_modules/mongodb-core/lib/topologies/server.js:752:35)
フィールドにテキストインデックスを作成すると、このエラーが発生します。 コード:
WordSchema = new Schema({
title: {
type: String,
required: true,
},
meanings: [MeaningSchema],
keys: [String],
tags: [String],
language: String,
createdAt: Date,
updatedAt: Date
});
WordSchema.index({title: 'text'}); ---> Error
WordSchema.index({title: 1}); ---> Works fine
ノード-9.11.1
マングース-5.1.1(5.0.8と同じ)
MongoDB-3.6.2
注目に値するかもしれませんが、私はいくつかのオプションでmongodb+srv://
uri構造を使用していました。
mongodb+srv://user:[email protected]?readPreference=primaryPreferred&retryWrites=true
uriオプションを削除すると、他のコードを変更せずに問題が解決しました。
mongodb+srv://user:[email protected]
確認できます- retryWrites
削除すると、「古い」 mongodb://
URIを使用しても、問題は解決しました。
こんにちは@ vkarpov15 、
AtlasのretryWritesを削除するとどのような影響がありますか?これはmongooseが内部で行っていることですか?
私はretryWritesについてこの問題を開きます
https://github.com/Automattic/mongoose/issues/6469 (その後、閉じました..解決されたと思いました)
よろしく、
タレク
こんにちは
最新のマングースバージョンに更新した後も、このエラーが発生します。 どのスキーマにもインデックスを作成していません。 今、私のアプリケーションはとても大きいので、どのコードがこの問題を引き起こしているのかを知ることができません。マングースでは^ 4.13.1は正常に動作しています。
/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/lib/utils.js:429
エラーをスローします。
^
エラー:循環依存が検出されました
serializeObject(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:331:34)
serializeInto(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
serializeObject(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
serializeInto(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
serializeObject(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
serializeInto(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
serializeObject(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
serializeInto(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
serializeObject(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
serializeInto(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
serializeObject(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
serializeInto(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
serializeObject(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
serializeInto(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
serializeObject(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
serializeInto(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
serializeObject(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
serializeInto(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
serializeObject(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
serializeInto(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:724:17)
serializeObject(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:345:18)
serializeInto(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/parser/serializer.js:934:17)
BSON.serializeで(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/bson/lib/bson/bson.js:63:28)
Query.toBin(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/connection/commands.js:144:25)
serializeCommands(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/connection/pool.js:1053:43)
Pool.writeで(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/connection/pool.js:1269:3)
executeWriteで(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/wireprotocol/3_2_support.js:80:10)
WireProtocol.insert(/Users/yogesh_bansal/workzone/Projects/apiserver/node_modules/mongoose/node_modules/mongodb-core/lib/wireprotocol/3_2_support.js:91:3)
[nodemon]アプリがクラッシュしました-開始する前にファイルの変更を待っています...
retryWrites
をオンにすると、このクラッシュが発生するかどうかを調査および確認します。
接続URIから&retryWrites=true
を削除すると、エラーが修正されることを確認できます
確認済み! &retryWrites=true
削除すると、エラーが完全に修正されます
Atlasで動作: ?retryWrites=true
ないMongoDBクラスター
以下のスクリプトは、ローカルでもAtlasに対しても問題なく機能します。 この問題を再現するには、以下のスクリプトを変更してください。
const assert = require('assert');
const mongoose = require('mongoose');
mongoose.set('debug', true);
const { Schema } = mongoose;
run().then(() => console.log('done')).catch(error => console.error(error.stack));
async function run() {
await mongoose.connect('mongodb+srv://user:[email protected]/test?retryWrites=true');
const M = mongoose.model('Test', new Schema({ name: String }));
await M.create({ name: 'test' });
console.log(await M.findOne());
}
@ vkarpov15
この問題を再現するには、以下のスクリプトを変更してください。
`` `const assert = require( 'assert');
const mongoose = require( 'mongoose');
mongoose.set( 'debug'、true);
const {スキーマ} =マングース;
run()。then(()=> console.log( 'done'))。catch(error => console.error(error.stack));
非同期関数run(){
mongoose.connect( 'mongodb + srv:// user:[email protected]/test?retryWrites = true'、{dbName: 'db-name'});を待ちます。
const M = mongoose.model( 'Test'、new Schema({name:{type:String、unique:true}}));
M.create({name: 'test'});を待つ
console.log(await M.findOne());
}
`` `
@mykhaliukからのこのコードで:
const mongoose = require('mongoose');
mongoose.set('debug', true);
const { Schema } = mongoose;
run().then(() => console.log('done')).catch(error => console.error(error.stack));
async function run() {
await mongoose.connect('mongodb+srv://user:[email protected]/test?retryWrites=true', {dbName:'db-name'});
const M = mongoose.model('Test', new Schema({ name: {type: String, unique: true }}));
await M.create({ name: 'test' });
console.log(await M.findOne());
}
次のエラーが発生しました: Error: cyclic dependency detected
retryWrites
を維持するために私が見つけた唯一の方法は、mongodb APIの関数createIndexes
を使用することです。
const mongoose = require('mongoose');
mongoose.set('debug', true);
const { Schema } = mongoose;
run().then(() => console.log('done')).catch(error => console.error(error.stack));
async function run() {
await mongoose.connect('mongodb+srv://user:[email protected]/test?retryWrites=true');
const M = mongoose.model('NewTest', new Schema({ name: {type: String} }));
M.collection.createIndexes([{key: {name: 1}, name: "name", unique: true}])
await M.create({ name: 'test' });
console.log(await M.findOne());
}
そのため、Mongooseモデル定義からunique
、 index
を削除し、 createIndexes (https://docs.mongodb.com/manual/reference/command/createIndexes/)を使用してすべてのインデックスを作成します。
私はこの問題に遭遇し、Mongoose4.11.7から5.1.4にアップデートしました。 接続URIから?retryWrites=true
を削除しようとしましたが、うまくいきませんでした。 最後に、次のようなカスタム_id
プロパティでindex:true
を使用していることがわかりました。
_id: {
type: String,
required: true,
index: true
}
index:true
削除すると、問題が修正されました。 また、解決策に言及しているこの問題を見つけました: https :
持ったときに私のために、私はこの問題に遭遇したretryWrites=true
私の接続文字列内とSchema.index({ someKey: 1 })
私のモデルに。
モンゴシェルでは、実行db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
返さ{ "featureCompatibilityVersion" : { "version" : "3.6" } }
。
次に、mongoシェルでdb.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )
を実行して、mongodbのfeatureCompatibilityVersion
を3.4
にダウングレードし、 featureCompatibilityVersion
retryWrites=true
とSchema.index({ someKey: 1 })
を使用してアプリケーションを再度実行しました。上記の通り。
インデックスが正常に作成されていたことを確認した後、私は、アップグレードfeatureCompatibilityVersion
する3.6
実行することでのMongoDBのdb.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )
し、再度自分のアプリケーションを実行しました。 循環依存エラーは表示されなくなりました。
問題が見つかりました。 Atlas、 retryWrites
、またはfeatureCompatibilityVersion
とは何の関係もありません。 これは、 _id
インデックスを作成しようとすることと関係があります。 最小限の再現スクリプト:
const mongoose = require('mongoose');
mongoose.set('debug', true);
Error.stackTraceLimit = Infinity;
const { Schema } = mongoose;
run().then(() => console.log('done')).catch(error => console.error(error.stack));
async function run() {
await mongoose.connect('mongodb://localhost:27017/test', {dbName: 'test'});
const M = mongoose.model('Test', new Schema({ _id: { type: String, index: true } }));
await M.create({ _id: 'abc' + Math.random() });
console.log(await M.findOne());
}
このためにmongodbドライバーでPRを開きます
素敵な@ vkarpov15
@ vkarpov15💪
接続文字列からretryWritesクエリ文字列を削除して修正しました。
前
mongodb:// sa :
後
mongodb:// sa :
お役に立てれば。
_id
@ otisidevにあるインデックスを削除してみてください。 したがって、 new Schema({ _id: {type: String, index: true} })
やschema.index({ _id: 1 })
ようなものがある場合は、それを削除してください。
@ vkarpov15ここには2つの問題があると思います。 プロジェクトのどこにも_id
インデックスがなく、URIから?retryWrites
を削除するまで、このエラーが表示されていました。 それを示すプロジェクトを作ります。 とにかく、これは本当にマングースではなく、mongodbドライバーの問題のようです
@ vkarpov15これは、 _id
インデックスを付けずにこの問題を生成するスクリプトです。
マングース:v5.1.5
ノード:v8.11.3
const mongoose = require('mongoose')
const { Schema } = mongoose
async function run() {
try {
await mongoose.connect('mongodb://localhost:27017/test?retryWrites=true', {
dbName: 'mongoose-issue-6109'
})
const Model = mongoose.model('Model', new Schema({
email: {
type: String,
index: {
unique: true
}
}
}))
await Model.create({
email: '[email protected]'
})
console.log(await Model.findOne())
} catch(err) {
console.error(err)
}
}
run()
インデックスフィールドを次のように設定します。
index: { type: 'hashed', unique: true }
また、常にこの問題を引き起こします
ええ、これは正当な問題のようです-コードベースをスキャンして不正なインデックスを探しましたが、それでも再発するようです。 5.1.0
ダウングレードされ、正常に動作しているようです。
https://github.com/Automattic/mongoose/issues/6469へのリンク-さらにいくつかの再現手順。
私はバグを見ました。
_メール_ :{
タイプ:文字列、
必須:true、
_一意:true _
}、
.....。
credentialSchema.index({ _ email_ :1、ドメイン:1、
モデル定義から一意を削除する必要がありました。
@AndrewBarba再現に感謝します。node-mongodb-native#1740のような別の問題を見つけました。https://github.com/mongodb/node-mongodb-native/pull/1758を参照して
アトラスを使用しているときに同じ問題が発生しましたが、ローカルではすべて問題ありませんでした。 誰かが提案したように、それを回避する簡単な修正はパラメータ?retryWrites=true
削除することであり、今では問題はありません。
5.1.8で修正する必要があります
MongoDB AtlasとGridStoreで問題が発生しました。「retryWrites = true」を削除するまで、書き込み操作が機能しませんでした。
最も参考になるコメント
確認できます-
retryWrites
削除すると、「古い」mongodb://
URIを使用しても、問題は解決しました。