【发布时间】:2015-11-11 06:25:42
【问题描述】:
我是sails.js 的新手,我正在尝试使用sails js 创建crud 和登录。我想从多个集合中获取登录用户的记录,例如用户个人资料详细信息和登录用户完成的帖子。 我不知道如何从多个集合中查询,例如用户、仪表板(包括用户登录后发布的所有帖子)。如果有人有想法,请与我分享或指导我如何完成此任务。
这是我的仪表板控制器
require('../models/Dashboard.js');
var User = require('../models/User.js');
module.exports = {
//View all record posted by login user from dashboard collection
index: function(req, res ){
//console.log(req.session.passport.user);
var userId = req.session.passport.user;
// here i want to get data from user collection and want to send to the view
Dashboard.find({posted_by: {$in: [userId]}}).exec(function(err, result){
if(err){
sails.log("----Error----"+err);
}else{
/* console.log(result);*/
res.view('dashboard/index',{'result': result});
}
});
},
create: function(req, res){
//view for new post entry
// var userId = req.session.user_detail._id;
// sails.log(req.session);
res.view('dashboard/create');
},
newpost: function(req, res){
// Post New record to dashboard collection
var params = req.params.all();
var userId = req.session.passport.user;
Dashboard.create({ title: params.heading, description: params.message, posted_by: userId }).exec(function(error, post_created){
if(error){
}else{
req.session.post_details = post_created;
res.redirect('/dashboard');
}
});
},
removePost: function(req, res)
{
// remove record from collection
var id = req.query.id;
//var id = req.param("id", null);
//console.log(id);
//sails.log(id);
Dashboard.findOne(id).exec(function(err, user) {
user.destroy(function(err) {
res.redirect( 'dashboard/index/');
// record has been removed
});
});
},
update: function(req, res){
// Get dashboard collection record to update
var id =req.query.id;
console.log(id);
Dashboard.findOne(id).exec( function(err, post){
// console.log(post);
res.view('dashboard/update',{'post':post});
});
},
edit: function (req, res) {
// Update the record in dashboard collection
var id = req.param("id",null);
// var params = req.params.all()
Dashboard.findOne(id).exec(function(err, dashboard) {
dashboard.title = req.body.title;
dashboard.description = req.body.description;
//user.name = params;
dashboard.save(function(err){
if(err) {
res.send("Error");
}else {
res.redirect('dashboard/index');
}
});
});
},
profile: function(req, res){
//view for new post entry
// var userId = req.session.user_detail._id;
// sails.log(req.session);
res.view('dashboard/profile');
},
/* upload: function(req, res){
if(req.method === 'GET')
return res.json({ 'status':'Get Not Allowed'});
console.log('status: Get Not Allowed');
var userPhoto =req.file('userPhoto');
console.log("*******User Photo***********");
console.log(userPhoto);
console.log('****************************');
userPhoto.upload( function onUploadComplete (err, files){
//file upload to /tmp/public folder
if(err) return res.serverError(err);
// if error return and send 500 error with error
console.log("*************** Uploaded file ************* ");
console.log(files);
var id = req.session.passport.user;
//res.json({status: 200, file: files});
User.findOne(id).exec( function (err, user){
user.userName = req.body.userName;
user.userPhoto = req.body.files;
user.save(function (err){
if(err) { console.log("Error updating profile");}
res.redirect('dashboard/index');
});
});
});
}*/
};
这是我的用户模型
var bcrypt = require('bcrypt');
module.exports = {
attributes: {
username:{
type: 'string'
},
userphoto: {
type: 'string'
},
email: {
type: 'email',
required: true,
unique: true
},
password: {
type: 'string',
minLength: 6,
required: true
},
toJSON: function() {
var obj = this.toObject();
delete obj.password;
return obj;
}
},
beforeCreate: function(user, cb) {
bcrypt.genSalt(10, function(err, salt) {
bcrypt.hash(user.password, salt, function(err, hash) {
if (err) {
console.log(err);
cb(err);
} else {
user.password = hash;
cb();
}
});
});
}
};
这是我的仪表板模型
module.exports = {
attributes: {
title:{
type:'string',
//required:true,
columnName:'title'
},
description: {
type:'text',
columnName:'description'
},
posted_by: {
type: 'integer',
columnName: 'posted_by'
}
}
};
提前致谢
【问题讨论】:
标签: node.js mongodb sails.js mongodb-query sails-mongo