一尘不染

如何使用sailsjs v0.10与mongodb连接?

node.js

现在使用sailsjs
v0.10。配置connections.js和models.js并将其更改为connection:’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)

如果将collections.js更改为adapter.js会显示错误

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

阅读 288

收藏
2020-07-07

共1个答案

一尘不染

不看代码,我只能承担几件事。

  1. 您正在启动一个新的sailsjs v0.10项目
  2. 您没有正确设置配置。

如果不是这种情况,请告诉我,以便我可以适当地更新答案。


我有一个v0.10的样板,其中包含了一些内容,因此您可以看到它是如何完成的。在此处查看该回购

connections.js是适当的文件名,已在中进行了更改0.10

首先确保安装了sails-mongo。

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

接下来,您需要定义连接,并告诉Sails默认情况下要用于模型的适配器。这是一个什么样的例子connections.jsmodels.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.jsSails中定义的内容,也将它们结合起来。

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'
},
2020-07-07