(Sails V1 + MongoDB)如何使用SailsJS在MongoDB中创建动态集合/表?

时间:2018-06-04 10:02:16

标签: sails.js sails-mongo

我想使用SailsJS在mongoDB中创建动态集合/表。

实施例

1-新用户注册。

2-注册成功,用户的唯一(userID +表)表在MongoDB中创建。

3-我们如何从SailsJS访问此表(UserID +表)。

请帮忙, 感谢。

2 个答案:

答案 0 :(得分:0)

https://www.npmjs.com/package/sails-inverse-model

var sim = require('sails-inverse-model');

var folder_controllers = "/your/project/sails/api/"; //if folder_models == "" then: no generate controllers
var folder_models = "/your/project/sails/api/"; //if folder_models == "" then: no generate models
var folder_views = "/your/project/sails/"; //if folder_models == "" then: no generate views

//                host       port         database           views         models          controllers
sim.generatemg('localhost', 27017, 'my_name_collection', folder_views, folder_models, folder_controllers);

答案 1 :(得分:-1)

  • 使用sails new your_project_name
  • 创建您的风帆项目
  • 之后需要为您的项目设置mongoDB服务器。

在config / connections.js

中添加此代码
  DevelopmentMongoDBServer: {
    adapter: 'sails-mongo',
    host: 'localhost',
    port: 27017,
    // user: 'username', //optional
    // password: 'password', //optional
    database: 'my_mongo_database' //optional
  }

在config / models.js

中添加此代码
  connection: 'DevelopmentMongoDBServer',
  migrate: 'safe'

现在mongoDB已经为sailsJS做好了准备。 我假设您需要使用email,firstName,lastName..etc创建用户。要做到这一点,你需要一个模型和控制器。 在sailsJS中使用Blueprint API,您可以创建User model和UserController控制器。此用户模型与mongoDB中的集合相关(mongoDB中的集合与关系数据库中的表类似)。

使用终端转到您的项目root并运行sails generate api user。 这将在项目的api目录中创建User模型和UserController控制器。

将此代码添加到您的User.js模型中。

module.exports = {

  attributes: {
    email: { type: 'email' },
    firstName: { type: 'string' },
    lastName: { type: 'string' }
  }
};

UserController.js控制器中添加此代码。

module.exports = {

  //Create new user
  createUser: function (req, res) {
    var email = req.body.email;
    var firstName = req.body.firstName;
    var lastName = req.body.lastName;
    var searchQuery = {email: email};
    var userValues = {
      email: email,
      fistName: firstName,
      lastName: lastName
    };
    User.findOne(searchQuery)
      .exec(function (err, user) {
        if (err) return res.serverError(err);
        else if (user) {
          return res.send({message: 'user exists'});
        } else {
          User.create(userValues)
            .exec(function (err, nUser) {
              if (err) {
                return res.serverError(err);
              }
              return res.send({message: 'success', data: nUser});
            });
        }
      });
  },

  //Find a user
  findUser: function (req, res) {
    var email = req.param('email');
    User.findOne({ email: email})
      .exec(function (err, user) {
      if (err) return res.serverError(err);
      else if (!user) return res.send({ message: 'not found'});
      else return res.send({ message: 'success', user: user});
    })
  }

};

在config / routes.js内部定义了你的路由如下。

  'POST /user/create' : 'UserController.createUser',
  'GET /user/find' : 'UserController.findUser'