我正在使用sessionstore npm模块将会话数据存储在数据库中。
var session = require('express-session');
var sessionstore = require('sessionstore');
app.use(session({
secret:appConfig.JWT_SECRET,
resave:false,
saveUninitialized:true,
store: sessionstore.createSessionStore({
type: 'mongodb',
host: 'localhost',
port: 27017,
dbName: 'MyDatabase',
collectionName: 'sessions',
timeout: 10000
}),
cookie: {
maxAge: 1000 * 60 * 60 // Milliseconds (3600000ms -> 60min)
}
}));
我收到此错误:
MongoError: E11000 duplicate key error collection: myDatabase.sessions index: _id_ dup key: { : "Lz4SJIHaBfGFfNg3_ChNTkFnwKBLQDUN" }
at Function.MongoError.create (/home/user/public_html/projectName/server/node_modules/mongodb-core/lib/error.js:31:11)
at toError (/home/user/public_html/projectName/server/node_modules/mongodb/lib/utils.js:139:22)
at /home/user/public_html/projectName/server/node_modules/mongodb/lib/collection.js:1060:67
at /home/user/public_html/projectName/server/node_modules/mongodb-core/lib/connection/pool.js:461:18
at _combinedTickCallback (internal/process/next_tick.js:73:7)
at process._tickDomainCallback (internal/process/next_tick.js:128:9)
如何阻止创建具有相同ID的文档。我也没有在我的项目中使用Mongoose。可以做什么,因为这不会使服务器崩溃,但会关闭与数据库的所有连接,并且用户无法登录(或者没有api响应)。
我也在SO和github上检查了一些类似的问题,但它们都指向猫鼬或改名字段名称,但在我的情况下没有这样的事情。
请帮忙。
答案 0 :(得分:0)
只是不要指定ID,Mongo会自动为其分配一个未使用的ID。
请参阅db.collection.insert documentation,此摘录来自id section:
如果文档未指定_id字段,则MongoDB将添加 _id字段,之前为文档指定唯一的ObjectId 插入。大多数驱动程序创建ObjectId并插入_id字段, 但是mongod会创建并填充_id,如果驱动程序或 申请没有。