node.js - 如何使用sailsjs v0.10连接mongodb?

标签 node.js mongodb sails.js

现在使用sailsjs v0.10 。 配置connections.js和models.js,改成connection: 'localMongodbServer' ,安装npm installsails-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.

最佳答案

没有看到代码,我只能假设一些事情。

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

如果不是这样,请告诉我,以便我可以适本地更新答案。


我有一个 v0.10 的样板,其中包含一些内容,因此您可以看到它是如何完成的。见那个 repo here

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.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'
},

关于node.js - 如何使用sailsjs v0.10连接mongodb?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21598339/

相关文章:

javascript - 使用异步在 Node JS 中一个接一个地下载视频?

node.js - mongoDB 是否有重新连接问题或者我做错了?

node.js - npm install 不在/usr/bin 安装东西

javascript - 如何使用 SailsJs 作为库?

Node.js/MongoDB 限制返回更多记录

javascript - 在 node.js C++ 插件中实现 JS 算术运算符

javascript - 资源未找到异常 : User pool client ****** does not exist

java - 为什么 WriteConcern 在 MongoDB Java 驱动程序中被忽略?

mongodb - 使用 $set 更新嵌入文档

node.js - Node bcrypt 安装出现问题