Вопрос

У меня проблемы с тем, что эти 3 пакета для установки и совместной работы. Вот шаги, которые я предпринял:

  1. Установлен Nodejs 0.6.3 на основе инструкций здесь для Linux (я загрузил шарик с сайта, в отличие от использования дистрибуции в GIT): https://github.com/joyent/node/wiki/installation
  2. Установлен NPM с использованием установки Onliner, найденной здесь: http://npmjs.org/
  3. Установлены пакеты NPM для MongoDB, Mongojs и Mongoose. Кажется, все установлены, как и ожидалось.
  4. Создал небольшую программу для тестирования и получения следующего исключения:

    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 появляется в этом каталоге для меня:/opt/node/node_modules/mongodb/lib/mongodb/bson

Я попытался настроить эту строку кода, чтобы соответствовать этому, и все еще не успешно:

var mongoose = require('mongoose').Mongoose,
ObjectID = require('mongodb/bson').ObjectID;

Есть идеи, что я мог бы сделать не так? Просто чтобы уточнить, нужно ли мне создать каждую установку NPM, которую я скачал, или NPM делает это?

Тиа!

Это было полезно?

Решение

mongodb\bson Не модуль, откуда вы взяли этот пример?

Нормальное использование mongo в node.js достигается:

var mongoose = require('mongoose');
var mongodb = require('mongodb');

Теперь вы можете подключиться через

mongoose.connect("url");

При попытке получить ObjectID функция, на которую вы не должны полагаться mongodb но на mongoose с помощью:

var schema = mongoose.Schema,
    objectId = schema.ObjectId;

Пожалуйста, прочтите Монгусная документация.

Другие советы

Возможно, вы установили MongoDB в неправильный каталог для своего проекта. Один хороший способ избежать таких проблем - использовать файл package.json.

Создайте каталог для вашего проекта узла и переместите в него свой файл .js. Добавьте файл с именем package.json с этим содержимым:

{  
   "name": "application-name",
   "private": true,
   "dependencies": {
      "mongodb": ">=0.9.6-7",
      "mongoose": ">=0.0.1"
    }
}

Вы можете следовать шаблону, чтобы добавить другие ваши зависимости по мере необходимости.

Затем из этого каталога запустите 'NPM Install'. Он установит все зависимости для вашего приложения. Оттуда ваше приложение должно работать нормально.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top