【发布时间】:2020-12-25 16:59:21
【问题描述】:
代码:- 1
app.get("/", function(req, res) {
// var whichDay = dayFormated.dayFormated();
//
// console.log(whichDay);
Item.find({}, function(err, itemsFound) {
if (itemsFound.length === 0) {
console.log(itemsFound.length);
console.log("i Am Here if condition.");
Item.insertMany(defaultItems, function(err) {
console.log("I am inside insertMany");
if (err) {
console.log(err);
} else {
console.log("Successfully inserted default values to DB");
}
});
**res.redirect('/');**
console.log("exiting if bye :P");
} else {
console.log("back again at redirect");
// console.log(itemsFound);
res.render('list', {
titleToDoList: "Today",
itemslist: itemsFound
});
}
});
});
控制台日志:- 1
0
i Am Here if condition.
exiting if bye :P
0
i Am Here if condition.
exiting if bye :P
0
i Am Here if condition.
exiting if bye :P
0
i Am Here if condition.
exiting if bye :P
0
i Am Here if condition.
exiting if bye :P
0
i Am Here if condition.
exiting if bye :P
0
i Am Here if condition.
exiting if bye :P
0
i Am Here if condition.
exiting if bye :P
0
i Am Here if condition.
exiting if bye :P
0
i Am Here if condition.
exiting if bye :P
I am inside insertMany
Successfully inserted default values to DB
back again at redirect
I am inside insertMany
{ BulkWriteError: E11000 duplicate key error collection: todolistDB.items index: _id_ dup key: { _id: ObjectId('5f55f40136e7195ed7614bbb') }
at OrderedBulkOperation.handleWriteError (My_Project_Directorynode_modules/mongodb/lib/bulk/common.js:1257:9)
at resultHandler (My_Project_Directorynode_modules/mongodb/lib/bulk/common.js:521:23)
at handler (My_Project_Directorynode_modules/mongodb/lib/core/sdam/topology.js:942:24)
at fn (My_Project_Directorynode_modules/mongodb/lib/cmap/connection_pool.js:356:13)
at handleOperationResult (My_Project_Directorynode_modules/mongodb/lib/core/sdam/server.js:558:5)
at MessageStream.messageHandler (My_Project_Directorynode_modules/mongodb/lib/cmap/connection.js:277:5)
at MessageStream.emit (events.js:198:13)
at processIncomingData (My_Project_Directorynode_modules/mongodb/lib/cmap/message_stream.js:144:12)
at MessageStream._write (My_Project_Directorynode_modules/mongodb/lib/cmap/message_stream.js:42:5)
at doWrite (_stream_writable.js:415:12)
at writeOrBuffer (_stream_writable.js:399:5)
at MessageStream.Writable.write (_stream_writable.js:299:11)
at Socket.ondata (_stream_readable.js:710:20)
at Socket.emit (events.js:198:13)
at addChunk (_stream_readable.js:288:12)
at readableAddChunk (_stream_readable.js:269:11)
name: 'BulkWriteError',
driver: true,
code: 11000,
writeErrors: [ WriteError { err: [Object] } ],
result:
BulkWriteResult {
result:
{ ok: 1,
writeErrors: [Array],
writeConcernErrors: [],
insertedIds: [Array],
nInserted: 0,
nUpserted: 0,
nMatched: 0,
nModified: 0,
nRemoved: 0,
upserted: [] } },
insertedDocs:
[ { _id: 5f55f40136e7195ed7614bbc, itemName: 'Wakeup', __v: 0 },
{ _id: 5f55f40136e7195ed7614bbd, itemName: 'Bath', __v: 0 } ] }
I am inside insertMany
{ BulkWriteError: E11000 duplicate key error collection: todolistDB.items index: _id_ dup key: { _id: ObjectId('5f55f40136e7195ed7614bbb') }
at OrderedBulkOperation.handleWriteError (My_Project_Directorynode_modules/mongodb/lib/bulk/common.js:1257:9)
at resultHandler (My_Project_Directorynode_modules/mongodb/lib/bulk/common.js:521:23)
at handler (My_Project_Directorynode_modules/mongodb/lib/core/sdam/topology.js:942:24)
at fn (My_Project_Directorynode_modules/mongodb/lib/cmap/connection_pool.js:356:13)
at handleOperationResult (My_Project_Directorynode_modules/mongodb/lib/core/sdam/server.js:558:5)
at MessageStream.messageHandler (My_Project_Directorynode_modules/mongodb/lib/cmap/connection.js:277:5)
at MessageStream.emit (events.js:198:13)
at processIncomingData (My_Project_Directorynode_modules/mongodb/lib/cmap/message_stream.js:144:12)
at MessageStream._write (My_Project_Directorynode_modules/mongodb/lib/cmap/message_stream.js:42:5)
at doWrite (_stream_writable.js:415:12)
at writeOrBuffer (_stream_writable.js:399:5)
at MessageStream.Writable.write (_stream_writable.js:299:11)
at Socket.ondata (_stream_readable.js:710:20)
at Socket.emit (events.js:198:13)
at addChunk (_stream_readable.js:288:12)
at readableAddChunk (_stream_readable.js:269:11)
name: 'BulkWriteError',
driver: true,
code: 11000,
writeErrors: [ WriteError { err: [Object] } ],
result:
BulkWriteResult {
result:
{ ok: 1,
writeErrors: [Array],
writeConcernErrors: [],
insertedIds: [Array],
nInserted: 0,
nUpserted: 0,
nMatched: 0,
nModified: 0,
nRemoved: 0,
upserted: [] } },
insertedDocs:
[ { _id: 5f55f40136e7195ed7614bbc, itemName: 'Wakeup', __v: 0 },
{ _id: 5f55f40136e7195ed7614bbd, itemName: 'Bath', __v: 0 } ] }
I am inside insertMany
{ BulkWriteError: E11000 duplicate key error collection: todolistDB.items index: _id_ dup key: { _id: ObjectId('5f55f40136e7195ed7614bbb') }
at OrderedBulkOperation.handleWriteError (My_Project_Directorynode_modules/mongodb/lib/bulk/common.js:1257:9)
at resultHandler (My_Project_Directorynode_modules/mongodb/lib/bulk/common.js:521:23)
at handler (My_Project_Directorynode_modules/mongodb/lib/core/sdam/topology.js:942:24)
at fn (My_Project_Directorynode_modules/mongodb/lib/cmap/connection_pool.js:356:13)
at handleOperationResult (My_Project_Directorynode_modules/mongodb/lib/core/sdam/server.js:558:5)
at MessageStream.messageHandler (My_Project_Directorynode_modules/mongodb/lib/cmap/connection.js:277:5)
at MessageStream.emit (events.js:198:13)
at processIncomingData (My_Project_Directorynode_modules/mongodb/lib/cmap/message_stream.js:144:12)
at MessageStream._write (My_Project_Directorynode_modules/mongodb/lib/cmap/message_stream.js:42:5)
at doWrite (_stream_writable.js:415:12)
at writeOrBuffer (_stream_writable.js:399:5)
at MessageStream.Writable.write (_stream_writable.js:299:11)
at Socket.ondata (_stream_readable.js:710:20)
at Socket.emit (events.js:198:13)
at addChunk (_stream_readable.js:288:12)
at readableAddChunk (_stream_readable.js:269:11)
name: 'BulkWriteError',
driver: true,
code: 11000,
writeErrors: [ WriteError { err: [Object] } ],
result:
BulkWriteResult {
result:
{ ok: 1,
writeErrors: [Array],
writeConcernErrors: [],
insertedIds: [Array],
nInserted: 0,
nUpserted: 0,
nMatched: 0,
nModified: 0,
nRemoved: 0,
upserted: [] } },
insertedDocs:
[ { _id: 5f55f40136e7195ed7614bbc, itemName: 'Wakeup', __v: 0 },
{ _id: 5f55f40136e7195ed7614bbd, itemName: 'Bath', __v: 0 } ] }
I am inside insertMany
{ BulkWriteError: E11000 duplicate key error collection: todolistDB.items index: _id_ dup key: { _id: ObjectId('5f55f40136e7195ed7614bbb') }
at OrderedBulkOperation.handleWriteError (My_Project_Directorynode_modules/mongodb/lib/bulk/common.js:1257:9)
at resultHandler (My_Project_Directorynode_modules/mongodb/lib/bulk/common.js:521:23)
at handler (My_Project_Directorynode_modules/mongodb/lib/core/sdam/topology.js:942:24)
at fn (My_Project_Directorynode_modules/mongodb/lib/cmap/connection_pool.js:356:13)
at handleOperationResult (My_Project_Directorynode_modules/mongodb/lib/core/sdam/server.js:558:5)
at MessageStream.messageHandler (My_Project_Directorynode_modules/mongodb/lib/cmap/connection.js:277:5)
at MessageStream.emit (events.js:198:13)
at processIncomingData (My_Project_Directorynode_modules/mongodb/lib/cmap/message_stream.js:144:12)
at MessageStream._write (My_Project_Directorynode_modules/mongodb/lib/cmap/message_stream.js:42:5)
at doWrite (_stream_writable.js:415:12)
at writeOrBuffer (_stream_writable.js:399:5)
at MessageStream.Writable.write (_stream_writable.js:299:11)
at Socket.ondata (_stream_readable.js:710:20)
at Socket.emit (events.js:198:13)
at addChunk (_stream_readable.js:288:12)
at readableAddChunk (_stream_readable.js:269:11)
name: 'BulkWriteError',
driver: true,
code: 11000,
writeErrors: [ WriteError { err: [Object] } ],
result:
BulkWriteResult {
result:
{ ok: 1,
writeErrors: [Array],
writeConcernErrors: [],
insertedIds: [Array],
nInserted: 0,
nUpserted: 0,
nMatched: 0,
nModified: 0,
nRemoved: 0,
upserted: [] } },
insertedDocs:
[ { _id: 5f55f40136e7195ed7614bbc, itemName: 'Wakeup', __v: 0 },
{ _id: 5f55f40136e7195ed7614bbd, itemName: 'Bath', __v: 0 } ] }
I am inside insertMany
{ BulkWriteError: E11000 duplicate key error collection: todolistDB.items index: _id_ dup key: { _id: ObjectId('5f55f40136e7195ed7614bbb') }
at OrderedBulkOperation.handleWriteError (My_Project_Directorynode_modules/mongodb/lib/bulk/common.js:1257:9)
at resultHandler (My_Project_Directorynode_modules/mongodb/lib/bulk/common.js:521:23)
at handler (My_Project_Directorynode_modules/mongodb/lib/core/sdam/topology.js:942:24)
at fn (My_Project_Directorynode_modules/mongodb/lib/cmap/connection_pool.js:356:13)
at handleOperationResult (My_Project_Directorynode_modules/mongodb/lib/core/sdam/server.js:558:5)
at MessageStream.messageHandler (My_Project_Directorynode_modules/mongodb/lib/cmap/connection.js:277:5)
at MessageStream.emit (events.js:198:13)
at processIncomingData (My_Project_Directorynode_modules/mongodb/lib/cmap/message_stream.js:144:12)
at MessageStream._write (My_Project_Directorynode_modules/mongodb/lib/cmap/message_stream.js:42:5)
at doWrite (_stream_writable.js:415:12)
at writeOrBuffer (_stream_writable.js:399:5)
at MessageStream.Writable.write (_stream_writable.js:299:11)
at Socket.ondata (_stream_readable.js:710:20)
at Socket.emit (events.js:198:13)
at addChunk (_stream_readable.js:288:12)
at readableAddChunk (_stream_readable.js:269:11)
name: 'BulkWriteError',
driver: true,
code: 11000,
writeErrors: [ WriteError { err: [Object] } ],
result:
BulkWriteResult {
result:
{ ok: 1,
writeErrors: [Array],
writeConcernErrors: [],
insertedIds: [Array],
nInserted: 0,
nUpserted: 0,
nMatched: 0,
nModified: 0,
nRemoved: 0,
upserted: [] } },
insertedDocs:
[ { _id: 5f55f40136e7195ed7614bbc, itemName: 'Wakeup', __v: 0 },
{ _id: 5f55f40136e7195ed7614bbd, itemName: 'Bath', __v: 0 } ] }
I am inside insertMany
{ BulkWriteError: E11000 duplicate key error collection: todolistDB.items index: _id_ dup key: { _id: ObjectId('5f55f40136e7195ed7614bbb') }
at OrderedBulkOperation.handleWriteError (My_Project_Directorynode_modules/mongodb/lib/bulk/common.js:1257:9)
at resultHandler (My_Project_Directorynode_modules/mongodb/lib/bulk/common.js:521:23)
at handler (My_Project_Directorynode_modules/mongodb/lib/core/sdam/topology.js:942:24)
at fn (My_Project_Directorynode_modules/mongodb/lib/cmap/connection_pool.js:356:13)
at handleOperationResult (My_Project_Directorynode_modules/mongodb/lib/core/sdam/server.js:558:5)
at MessageStream.messageHandler (My_Project_Directorynode_modules/mongodb/lib/cmap/connection.js:277:5)
at MessageStream.emit (events.js:198:13)
at processIncomingData (My_Project_Directorynode_modules/mongodb/lib/cmap/message_stream.js:144:12)
at MessageStream._write (My_Project_Directorynode_modules/mongodb/lib/cmap/message_stream.js:42:5)
at doWrite (_stream_writable.js:415:12)
at writeOrBuffer (_stream_writable.js:399:5)
at MessageStream.Writable.write (_stream_writable.js:299:11)
at Socket.ondata (_stream_readable.js:710:20)
at Socket.emit (events.js:198:13)
at addChunk (_stream_readable.js:288:12)
at readableAddChunk (_stream_readable.js:269:11)
name: 'BulkWriteError',
driver: true,
code: 11000,
writeErrors: [ WriteError { err: [Object] } ],
result:
BulkWriteResult {
result:
{ ok: 1,
writeErrors: [Array],
writeConcernErrors: [],
insertedIds: [Array],
nInserted: 0,
nUpserted: 0,
nMatched: 0,
nModified: 0,
nRemoved: 0,
upserted: [] } },
insertedDocs:
[ { _id: 5f55f40136e7195ed7614bbc, itemName: 'Wakeup', __v: 0 },
{ _id: 5f55f40136e7195ed7614bbd, itemName: 'Bath', __v: 0 } ] }
I am inside insertMany
{ BulkWriteError: E11000 duplicate key error collection: todolistDB.items index: _id_ dup key: { _id: ObjectId('5f55f40136e7195ed7614bbb') }
at OrderedBulkOperation.handleWriteError (My_Project_Directorynode_modules/mongodb/lib/bulk/common.js:1257:9)
at resultHandler (My_Project_Directorynode_modules/mongodb/lib/bulk/common.js:521:23)
at handler (My_Project_Directorynode_modules/mongodb/lib/core/sdam/topology.js:942:24)
at fn (My_Project_Directorynode_modules/mongodb/lib/cmap/connection_pool.js:356:13)
at handleOperationResult (My_Project_Directorynode_modules/mongodb/lib/core/sdam/server.js:558:5)
at MessageStream.messageHandler (My_Project_Directorynode_modules/mongodb/lib/cmap/connection.js:277:5)
at MessageStream.emit (events.js:198:13)
at processIncomingData (My_Project_Directorynode_modules/mongodb/lib/cmap/message_stream.js:144:12)
at MessageStream._write (My_Project_Directorynode_modules/mongodb/lib/cmap/message_stream.js:42:5)
at doWrite (_stream_writable.js:415:12)
at writeOrBuffer (_stream_writable.js:399:5)
at MessageStream.Writable.write (_stream_writable.js:299:11)
at Socket.ondata (_stream_readable.js:710:20)
at Socket.emit (events.js:198:13)
at addChunk (_stream_readable.js:288:12)
at readableAddChunk (_stream_readable.js:269:11)
name: 'BulkWriteError',
driver: true,
code: 11000,
writeErrors: [ WriteError { err: [Object] } ],
result:
BulkWriteResult {
result:
{ ok: 1,
writeErrors: [Array],
writeConcernErrors: [],
insertedIds: [Array],
nInserted: 0,
nUpserted: 0,
nMatched: 0,
nModified: 0,
nRemoved: 0,
upserted: [] } },
insertedDocs:
[ { _id: 5f55f40136e7195ed7614bbc, itemName: 'Wakeup', __v: 0 },
{ _id: 5f55f40136e7195ed7614bbd, itemName: 'Bath', __v: 0 } ] }
I am inside insertMany
{ BulkWriteError: E11000 duplicate key error collection: todolistDB.items index: _id_ dup key: { _id: ObjectId('5f55f40136e7195ed7614bbb') }
at OrderedBulkOperation.handleWriteError (My_Project_Directorynode_modules/mongodb/lib/bulk/common.js:1257:9)
at resultHandler (My_Project_Directorynode_modules/mongodb/lib/bulk/common.js:521:23)
at handler (My_Project_Directorynode_modules/mongodb/lib/core/sdam/topology.js:942:24)
at fn (My_Project_Directorynode_modules/mongodb/lib/cmap/connection_pool.js:356:13)
at handleOperationResult (My_Project_Directorynode_modules/mongodb/lib/core/sdam/server.js:558:5)
at MessageStream.messageHandler (My_Project_Directorynode_modules/mongodb/lib/cmap/connection.js:277:5)
at MessageStream.emit (events.js:198:13)
at processIncomingData (My_Project_Directorynode_modules/mongodb/lib/cmap/message_stream.js:144:12)
at MessageStream._write (My_Project_Directorynode_modules/mongodb/lib/cmap/message_stream.js:42:5)
at doWrite (_stream_writable.js:415:12)
at writeOrBuffer (_stream_writable.js:399:5)
at MessageStream.Writable.write (_stream_writable.js:299:11)
at Socket.ondata (_stream_readable.js:710:20)
at Socket.emit (events.js:198:13)
at addChunk (_stream_readable.js:288:12)
at readableAddChunk (_stream_readable.js:269:11)
name: 'BulkWriteError',
driver: true,
code: 11000,
writeErrors: [ WriteError { err: [Object] } ],
result:
BulkWriteResult {
result:
{ ok: 1,
writeErrors: [Array],
writeConcernErrors: [],
insertedIds: [Array],
nInserted: 0,
nUpserted: 0,
nMatched: 0,
nModified: 0,
nRemoved: 0,
upserted: [] } },
insertedDocs:
[ { _id: 5f55f40136e7195ed7614bbc, itemName: 'Wakeup', __v: 0 },
{ _id: 5f55f40136e7195ed7614bbd, itemName: 'Bath', __v: 0 } ] }
I am inside insertMany
{ BulkWriteError: E11000 duplicate key error collection: todolistDB.items index: _id_ dup key: { _id: ObjectId('5f55f40136e7195ed7614bbb') }
at OrderedBulkOperation.handleWriteError (My_Project_Directorynode_modules/mongodb/lib/bulk/common.js:1257:9)
at resultHandler (My_Project_Directorynode_modules/mongodb/lib/bulk/common.js:521:23)
at handler (My_Project_Directorynode_modules/mongodb/lib/core/sdam/topology.js:942:24)
at fn (My_Project_Directorynode_modules/mongodb/lib/cmap/connection_pool.js:356:13)
at handleOperationResult (My_Project_Directorynode_modules/mongodb/lib/core/sdam/server.js:558:5)
at MessageStream.messageHandler (My_Project_Directorynode_modules/mongodb/lib/cmap/connection.js:277:5)
at MessageStream.emit (events.js:198:13)
at processIncomingData (My_Project_Directorynode_modules/mongodb/lib/cmap/message_stream.js:144:12)
at MessageStream._write (My_Project_Directorynode_modules/mongodb/lib/cmap/message_stream.js:42:5)
at doWrite (_stream_writable.js:415:12)
at writeOrBuffer (_stream_writable.js:399:5)
at MessageStream.Writable.write (_stream_writable.js:299:11)
at Socket.ondata (_stream_readable.js:710:20)
at Socket.emit (events.js:198:13)
at addChunk (_stream_readable.js:288:12)
at readableAddChunk (_stream_readable.js:269:11)
name: 'BulkWriteError',
driver: true,
code: 11000,
writeErrors: [ WriteError { err: [Object] } ],
result:
BulkWriteResult {
result:
{ ok: 1,
writeErrors: [Array],
writeConcernErrors: [],
insertedIds: [Array],
nInserted: 0,
nUpserted: 0,
nMatched: 0,
nModified: 0,
nRemoved: 0,
upserted: [] } },
insertedDocs:
[ { _id: 5f55f40136e7195ed7614bbc, itemName: 'Wakeup', __v: 0 },
{ _id: 5f55f40136e7195ed7614bbd, itemName: 'Bath', __v: 0 } ] }
代码:- 2
Item.find({}, function(err, itemsFound) {
if (itemsFound.length === 0) {
console.log(itemsFound.length);
console.log("i Am Here if condition.");
Item.insertMany(defaultItems, function(err) {
console.log("I am inside insertMany");
if (err) {
console.log(err);
} else {
console.log("Successfully inserted default values to DB");
**res.redirect('/');**
}
});
console.log("exiting if bye :P");
} else {
console.log("back again at redirect");
// console.log(itemsFound);
res.render('list', {
titleToDoList: "Today",
itemslist: itemsFound
});
}
});
});
控制台日志:- 2
[nodemon] 2.0.4
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node app.js`
server running on port 3000
0
i Am Here if condition.
exiting if bye :P
I am inside insertMany
Successfully inserted default values to DB
back again at redirect
代码 2 运行良好,但代码 1 循环了多次。有人可以向我解释为什么代码一循环多次吗?我将代码的位置加粗以检查参考。谢谢!。
查看我粘贴的日志,其中解释了该场景。
【问题讨论】:
-
我在您发布的代码中没有看到一个
for循环。 -
对不起,我说的是 app.get("/") 中的 Model.insertMany() 它一直在循环。请参考我粘贴的日志作为参考。
-
好吧,在
/路由中,您重定向到/,这样它就会一遍又一遍地自行运行。您需要发送响应,而不仅仅是一遍又一遍地重定向回相同的路由。 -
您是否查看过它正在重复的日志文件 { 0 i Am Here if condition.当我重定向回调函数时多次退出 if bye :P }。
-
是的。每次它进入那里时,您都会不断调用
res.redirect("/"),这只会使路线被一遍又一遍地调用。您认为其中哪一部分不是错误的并且是导致问题的原因?
标签: javascript node.js mongodb mongoose ejs