Sails Mongo Adapter 的替代方案来支持 MongoDB 5.0 和 6.0?

问题描述 投票:0回答:2

sails-mongo 适配器有什么替代品吗?根据 Sails-Mongo 兼容性,sails-mongo 仅支持 MongoDB 4.2。

我目前面临的问题如下:

error: Sending 500 ("Server Error") response: 
MongoError: Unsupported OP_QUERY command: find. The client driver may require an upgrade. For 
more details see https://dochub.mongodb.org/core/legacy-opcode-removal

我的package.json版本是

"sails-mongo":"^1.2.0",
"mongodb":"^5.2.0",
"connect-mongo":"^5.0.0",
"engines":{
  "node":"14.x",
}

这是我跑步时得到的结果

npm list mongodb

├─┬ [email protected]
│ └── [email protected] deduped
├── [email protected]
└─┬ [email protected]
  └── [email protected]
node.js mongodb sails.js sails-mongo connect-mongo
2个回答
0
投票

在 sails.js 上,您需要使用不同的库来支持较新版本的 mongodb 驱动程序。有一个关于它的问题。由于

sails-mongo
尚未更新,并且无法与 mongodb 6.0 一起使用。

我创建了一个包含完整解决方案的存储库:https://github.com/Goostavo/sails-mongodb-6

我正在使用以下软件包和文件。

我还在 Atlas 上使用标准主机 mongodb 和无服务器 mongodb 集群的配置。在 ATLAS 上运行时,我需要一些额外的配置,在数据集上我使用

config/env/
文件夹,对于会话,我做了一个疯狂的 if/else 循环来创建正确的连接字符串。

配置在

.env
文件中设置或使用
ENVIRONMENT VARIABLES

    "connect-mongodb-session": "^3.1.1",
    "sails-mongo-cloud": "^3.0.1",

文件

datastores.js

/**
 * Datastores
 * (sails.config.datastores)
 */

let cfg = {
  host: 'localhost',
  port: 27017,
  database: process.env.MONGO_DATABASE || 'localDB'
};


module.exports.datastores = {

  default: {
    adapter: require('sails-mongo-cloud'),
    url: 'mongodb://' + cfg.host + ':' + cfg.port + '/' + cfg.database,
    socketTimeoutMS: 360000
  },

};

session.js
文件:

/**
 * Session Configuration
 * (sails.config.session)
 *
 * Use the settings below to configure session integration in your app.
 * (for additional recommended settings, see `config/env/production.js`)
 *
 * For all available options, see:
 * https://sailsjs.com/config/session
 */

const cfg = {
  host: process.env.MONGO_HOST || 'localhost',
  port: process.env.MONGO_PORT || 27017,
  database: process.env.MONGO_DATABASE || 'localDB',
  user: process.env.MONGO_USER,
  password: process.env.MONGO_PWD,
  useatlas: process.env.USE_ATLAS
};

let url;
if (process.env.NODE_ENV === 'production' && cfg.useatlas) {
  url = 'mongodb+srv://' + cfg.user + ':' + cfg.password + '@' + cfg.host + '/' + cfg.database + '?retryWrites=true&w=majority';
} else if (process.env.NODE_ENV === 'production'){
  url = 'mongodb://' + cfg.user + ':' + cfg.password + '@' + cfg.host + '/' + cfg.database + '?retryWrites=true';
} else {
  if (!cfg.user) {
    url = 'mongodb://' + cfg.host + '/' + cfg.database + '?retryWrites=true';
  } else {
    url = 'mongodb://' + cfg.user + ':' + cfg.password + '@' + cfg.host + '/' + cfg.database + '?retryWrites=true';
  }
}

module.exports.session = {

  /***************************************************************************
  *                                                                          *
  * Session secret is automatically generated when your new app is created   *
  * Replace at your own risk in production-- you will invalidate the cookies *
  * of your users, forcing them to log in again.                             *
  *                                                                          *
  ***************************************************************************/
  secret: 'sails is awesome',

  /***************************************************************************
  *                                                                          *
  * Customize when built-in session support will be skipped.                 *
  *                                                                          *
  * (Useful for performance tuning; particularly to avoid wasting cycles on  *
  * session management when responding to simple requests for static assets, *
  * like images or stylesheets.)                                             *
  *                                                                          *
  * https://sailsjs.com/config/session                                       *
  *                                                                          *
  ***************************************************************************/

  cookie: {
    maxAge: 30 * 24 * 60 * 60 * 1000 // 30 days
  },
  adapter: 'connect-mongodb-session',
  'uri': url,

  //collection: 'sessions',
  // isSessionDisabled: function (req){
  //   return !!req.path.match(req._sails.LOOKS_LIKE_ASSET_RX);
  // },


  // isSessionDisabled: function (req){
  //   return !!req.path.match(req._sails.LOOKS_LIKE_ASSET_RX);
  // },
};

0
投票

这是否支持连接 mongo-db 在线存档连接字符串?

© www.soinside.com 2019 - 2024. All rights reserved.