Как подключиться к mongodb с помощью sailsjs v0.10?

Теперь используйте sailsjs v0.10. Настройте connection.js и models.js и измените его на соединение: "localMongodbServer", установленный npm install sails-mongo.

Удерживайте все это, показывая ошибку

 var des = Object.keys(dbs[collectionName].schema).length === 0 ?
                                          ^
TypeError: Cannot read property 'schema' of undefined

at Object.module.exports.adapter.describe (app1_test/node_modules/sails-mongo/lib/adapter.js:70:48)

Если change collections.js на adapter.js показывает ошибку

  [err] In model (model1), invalid connection :: someMongodbServer
  [err] Must contain an `adapter` key referencing the adapter to use.

Ответы

Ответ 1

Не просматривая код, я могу только предположить несколько вещей.

  • Вы начинаете новый проект sailsjs v0.10
  • У вас нет надлежащей настройки конфигурации.

Если это не так, дайте мне знать, чтобы я мог соответствующим образом обновить ответ.


У меня есть шаблон для v0.10, в котором есть несколько вещей, запекшихся в нем, поэтому вы можете видеть, как это делается. Посмотрите, что repo здесь

connections.js - соответствующее имя файла, оно было изменено в 0.10.

Сначала убедитесь, что установлен sails-mongo.

#From your project root run
npm install sails-mongo --save

Затем вам нужно определить ваше соединение и указать паруса, какой адаптер использовать для моделей по умолчанию. Вот пример того, как выглядят connections.js и models.js.

connections.js

module.exports.connections = {
  mongodb: {
    adapter   : 'sails-mongo',
    host      : 'localhost',
    port      : 27017,
    user      : '',
    password  : '',
    database  : 'yourdevdb'
  }
}

models.js

module.exports.models = {

  // Your app default connection.
  // i.e. the name of one of your app connections (see `config/connections.js`)
  //
  // (defaults to localDiskDb)
  connection: 'mongodb'
};

Вы также можете указать свои соединения в config/local.js, чтобы избежать передачи конфиденциальных данных в ваш репозиторий. Вот как вы это делаете.

Вам не нужно указывать все содержимое, так как local.js будет переопределять то, что определено в connections.js Паруса также будут их комбинировать.

local.js

module.exports = {
  connections: {
      mongodb: {
        host      : 'localhost',
        port      : 27017,
        user      : '',
        password  : '',
        database  : 'yourdevdb'
      }
  }
}

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

Вы делаете это, указав adapter: в своей модели.

module.exports = {
  adapter: 'myothermongodb',
},
config: {
  user: 'root',
  password: 'thePassword',
  database: 'testdb',
  host: '127.0.0.1'
},

Ответ 2

Если вы работаете с v0.10, вам нужно установить ветвь sails-mongo из v0.10 в Github, потому что API-интерфейс адаптера Waterline был изменен в версии 10.10. В package.json поставьте

"sails-mongo": "https://github.com/balderdashy/sails-mongo/archive/v0.10.tar.gz"

затем запустите npm install.

В config/connections.js вам следует указать адаптер MongoDB, а в вашем config/models.js этот адаптер должен быть указан.

Чтобы он работал, sails lift должен работать после этого.