Node.js, Mongoose y MongoDB Un dolor para instalar :(
Pregunta
Tengo problemas para obtener estos 3 paquetes para instalar y trabajar juntos. Aquí están los pasos que tomé:
- NodeJS instalado 0.6.3 basado en las instrucciones aquí para Linux (descargué la bola de alquitrán del sitio en lugar de usar la distribución en git): https://github.com/joyent/node/wiki/installation
- NPM instalado utilizando la instalación de Onliner que se encuentra aquí: http://npmjs.org/
- Paquetes NPM instalados para MongoDB, Mongojs y Mongoose. Todos parecen instalar como se esperaba.
Creó un pequeño programa para probar y obtener la siguiente excepción:
Error: Cannot find module 'mongodb/bson' at Function._resolveFilename (module.js:334:11) at Function._load (module.js:279:25) at Module.require (module.js:357:17) at require (module.js:368:17) at Object.<anonymous> (/local/mnt/apps/node-v0.6.3/app.js:6:16) at Module._compile (module.js:432:26) at Object..js (module.js:450:10) at Module.load (module.js:351:31) at Function._load (module.js:310:12) at Array.0 (module.js:470:10)
Bson.js aparece en este directorio para mí:/opt/node/node_modules/mongoDB/lib/mongoDB/BSON
He intentado ajustar esta línea de código para que coincida con eso y todavía no hay éxito:
var mongoose = require('mongoose').Mongoose,
ObjectID = require('mongodb/bson').ObjectID;
¿Alguna idea de lo que podría estar haciendo mal? Solo para aclarar, ¿necesito construir cada instalación de NPM que descargué o lo hace NPM?
¡Tia!
Solución
mongodb\bson
No es un módulo, ¿de dónde sacaste este ejemplo?
El uso normal de Mongo en Node.js se logra por:
var mongoose = require('mongoose');
var mongodb = require('mongodb');
Ahora puedes conectarte a través de
mongoose.connect("url");
Al intentar recuperar el ObjectID
función en la que no debes confiar mongodb
pero en mongoose
a través de:
var schema = mongoose.Schema,
objectId = schema.ObjectId;
Por favor lea el Documentación de mangosta.
Otros consejos
Es posible que haya instalado MongoDB en el directorio incorrecto para su proyecto. Una buena manera de evitar este tipo de problemas es usar un archivo paquete.json.
Cree un directorio para su proyecto de nodo y mueva su archivo .js. Agregue un archivo llamado paquete.json con estos contenidos:
{
"name": "application-name",
"private": true,
"dependencies": {
"mongodb": ">=0.9.6-7",
"mongoose": ">=0.0.1"
}
}
Puede seguir el patrón para agregar sus otras dependencias según sea necesario.
Luego, desde ese directorio, ejecute 'NPM Install'. Instalará todas las dependencias para su aplicación. Desde allí, su aplicación debería funcionar bien.