Indian Cities Database
The `indian-cities-database` package offers a structured dataset comprising Indian cities and their respective states, designed for integration into Node.js applications. It provides a static JavaScript array containing city-state objects, which can be directly consumed or used to populate a local MongoDB instance. The current and likely final stable version is 1.0.5, with its last known activity dating back to September 2016, indicating that the package is no longer actively maintained. A key feature is its ability to push this geographical data to MongoDB, complete with a predefined Mongoose schema for streamlined querying. This library simplifies the integration of Indian location data, providing a readily available dataset and tools for database persistence, bypassing the need for manual data sourcing and structuring.
Common errors
-
TypeError: Cannot destructure property 'cities' of 'indianCitiesDatabase' as it is undefined.
cause Attempting to use ES Modules `import { cities } from 'indian-cities-database';` in a CommonJS context or vice-versa, or incorrectly accessing a non-existent export.fixEnsure you are using CommonJS `const { cities } = require('indian-cities-database');` as the library is CJS-only. If `cities` is undefined after `require`, verify the package installation and the correct property name. -
MongooseError: The `uri` parameter to `openUri()` must be a string, got 'undefined'.
cause When attempting to use `pushToDatabase`, Mongoose is trying to connect to a database but the connection URI (or other connection options) is not being provided or is incorrect. This function uses its own internal Mongoose instance.fixThe `pushToDatabase` function has optional arguments: `databaseName`, `collectionName`, and `callback`. Ensure that if you are providing a database name, it's a valid string. If Mongoose is trying to connect without a URI, it likely defaults to `mongodb://localhost:27017/` which might require a running local MongoDB instance. Check the underlying `populate.js` file for default connection logic.
Warnings
- breaking The `pushToDatabase` method irrevocably removes the specified MongoDB collection (if it exists) before repopulating it with city data. This is a destructive operation and should be used with extreme caution.
- gotcha Calling `pushToDatabase` within an API or frequently-executed code can lead to database connection collisions, as the method creates its own Mongoose connection. This can disrupt existing database connections in your application.
- gotcha This package is CommonJS-only and does not provide ESM exports. Direct `import` statements will fail in pure ESM Node.js environments.
- deprecated The package has not received updates since September 2016 (version 1.0.5). The city data might be outdated, and there will be no future bug fixes, security updates, or feature enhancements.
Install
-
npm install indian-cities-database -
yarn add indian-cities-database -
pnpm add indian-cities-database
Imports
- cities
import { cities } from 'indian-cities-database';const { cities } = require('indian-cities-database'); - pushToDatabase
import { pushToDatabase } from 'indian-cities-database';const { pushToDatabase } = require('indian-cities-database'); - citySchema
import { citySchema } from 'indian-cities-database';const { citySchema } = require('indian-cities-database');
Quickstart
const indianCitiesDatabase = require('indian-cities-database');
// Get the full list of cities and states
const cities = indianCitiesDatabase.cities;
console.log(`Total cities found: ${cities.length}`);
console.log('First 5 cities:');
cities.slice(0, 5).forEach(city => {
console.log(` - ${city.city}, ${city.state}`);
});
// Example of accessing the Mongoose schema (requires Mongoose to be installed separately)
// Note: This won't run without 'mongoose' installed and a MongoDB connection.
// try {
// const mongoose = require('mongoose');
// const citySchema = indianCitiesDatabase.citySchema;
// citySchema.set('collection', 'my_cities_collection');
// const MyCity = mongoose.model('MyCity', citySchema);
// console.log('Mongoose City Model created successfully (schema only).');
// } catch (e) {
// console.warn('Mongoose or MongoDB not available, skipping schema example:', e.message);
// }