Skip to content

lamualfa/i18next-node-mongodb-backend-next

master
Switch branches/tags
Code

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
May 19, 2022
May 19, 2022
Apr 8, 2020
May 19, 2022
May 19, 2022
Apr 6, 2020
May 19, 2022
May 19, 2022
May 19, 2022
May 19, 2022
May 19, 2022

npm license code style: prettier

Are you a Deno user? If true, we provide the same library for Deno. See: Mongo Backend for Deno 🦖

Inspired from i18next-node-mongodb-backend with support for mongodb@3.5.x and some bug fixes and more improvements

Integrate i18next with MongoDB

Banner

Introduction

This is a i18next backend to be used Node JS. It will load resources from a MongoDB database with official node mongodb driver.

Prevously is i18next-node-mongo-backend. Because i lost my NPM account, the package was renamed to i18next-node-mongodb-backend-next.

Getting started

yarn add mongodb i18next-node-mongodb-backend-next
# or
npm install mongodb i18next-node-mongodb-backend-next

Important: This library doesn't include mongodb library. You need to install it yourself.

Usage

const i18next = require('i18next');
const Backend = require('i18next-node-mongodb-backend-next');

i18next.use(Backend).init({
  // Backend Options
  backend: options,
});

Backend Options

{
  // Database Name
  dbName: '<DB Name>', // Required

  // MongoDB Uri
  uri: '<DB URI>',

  // Or

   // MongoDB standard configuration
  host: '<DB Host>',
  port: 27017,

  // Or

  // If you have your own `MongoClient`, put in here:
  // Note: If this has already been entered, the other MongoDB configurations will be ignored
  client: new MongoClient(), // work with connected client or not

  // MongoDB authentication. Remove it if not needed
  // Choose one, `user` or `username`. Both are the same.
  user: '<DB User>',
  username: '<DB User>',
  password: '<DB Password>',

  // Collection name in database will be used to store i18next data
  collectionName: 'i18n',

  // MongoDB field name
  languageFieldName: 'lang',
  namespaceFieldName: 'ns',
  dataFieldName: 'data',

  // Remove MongoDB special character from field name. See https://jira.mongodb.org/browse/SERVER-3229
  sanitizeFieldNameCharacter: true,

  // Error handlers
  readOnError: console.error,
  readMultiOnError: console.error,
  createOnError: console.error,

  // MongoClient Options. See https://mongodb.github.io/node-mongodb-native/3.5/api/MongoClient.html
  mongodb: {
    useUnifiedTopology: true
  }
};

Example Backend Options

Connect with uri:

{
  uri: 'mongodb://localhost:27017/test',
  dbName: 'test' // Required field
}

Connect with host and port:

{
  host: 'localhost',
  port: 27017,
  dbName: 'test' // Required field
}

Connect with MongoClient instance (Recommended):

If you already have your own connection, use this to avoid useless connections

{
  client: new MongoClient(), // Change with your MongoClient instance
  dbName: 'test', // Required field
}

Example of the MongoDB document that will be created:

{
  "lang": "en-US",
  "ns": "translations",
  "data": {
    "key": "Thank you!"
  }
}

Key name is according to provided in options

Visit here for more example usage

Changelog:

v1.0.1 (19-05-2022)

  • Add support to both of user & username options.

v1.0.0 (19-05-2022)

  • Add support to mongodb v4 #18
  • Refactor the entire codebase
  • Testing improvement

v0.0.5 (13-07-2021):

v0.0.4 (08-04-2020):

  • Critical bug fixed
  • Remove persistConnection option
  • Rename filterFieldNameCharacter option to sanitizeFieldNameCharacter

v0.0.3 (DEPRECATED):

  • Add testing code with Jest
  • Add JSDOC
  • Add support for the uri option
  • Add filterFieldNameCharacter option
  • Some improvements