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

17

Теперь используйте 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.
    
задан tajuddin 06.02.2014 в 10:10
источник

2 ответа

34

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

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

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

У меня есть шаблон для 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's default connection.
  // i.e. the name of one of your app's connections (see 'config/connections.js')
  //
  // (defaults to localDiskDb)
  connection: 'mongodb'
};

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

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

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'
},
    
ответ дан gorelative 06.02.2014 в 15:57
источник
  • Это относится к 0,9,11? –  binarygiant 22.03.2014 в 14:09
  • Спасибо, это очень помогает, так как на этом 0.10.x нет документа об этом. –  A-letubby 14.05.2014 в 06:46
  • Как вы создаете производственную базу данных? –  Connor Leech 07.10.2015 в 00:05
7

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

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

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

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

Вот и все, sails lift должно работать после этого.

    
ответ дан bredikhin 06.02.2014 в 18:56
источник