我想使用SailsJS在mongoDB中创建动态集合/表。
1-新用户注册。
2-注册成功,用户的唯一(userID +表)表在MongoDB中创建。
3-我们如何从SailsJS访问此表(UserID +表)。
请帮忙, 感谢。
答案 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
在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'