2016-03-24 53 views
1

我想查詢到不同的收集用戶名,然後能夠插入到另一個集合無法讀取的不確定

這是Post.js文件屬性「newPost」

var mongoose = require('mongoose'); 

    var user = require('./Users.js'); 

var PostSchema = mongoose.Schema({ 
    uid : String, 
    text: String, 
    usename: String, 
    date: Date, 
    upvotes: Number, 
    downvotes: Number 
}); 


var Post = module.exports = mongoose.model('Post', PostSchema); 


module.exports.newPost = function(data){ 
    var userid = data.uid; 
    var username = ''; 
    user.User.findOne({_id:userid}, function(err,data){ 
     if(err) req.flash('error_msg','Invalid username'); 
     console.log(data) 
    }); 

}; 

這是路線Index.js文件

var express = require('express'); 
var router = express.Router(); 

var Posts = require('../models/Post.js'); 
var uid = ''; 

router.get('/', ensureAuthenticated, function (req, res) { 
    uid = req.query.uid; 
    console.log(uid); 
    res.render('index') 
}) 


router.post('/', function(req, res){ 
    var post = req.body.post; 
    var date = Date(); 
    var postData = { 
     uid : uid, 
     text: post, 
     usename: uid, 
     date: date, 
     upvotes: 0, 
     downvotes: 0 
    }; 
    console.log(postData); 
    Posts.newPost(postData); 
}); 

function ensureAuthenticated(req, res, next){ 
    if(req.isAuthenticated()){ 
     return next(); 
    } else { 
     req.flash('error_msg','You are not logged in'); 
     res.redirect('/users/login'); 
    } 
} 


module.exports = router; 

這是user.js的文件

var mongoose = require('mongoose'); 
var bcrypt = require('bcryptjs'); 

// User Schema 
var UserSchema = mongoose.Schema({ 
    username: { 
     type: String, 
     index:true 
    }, 
    password: { 
     type: String 
    }, 
    email: { 
     type: String 
    }, 
    name: { 
     type: String 
    } 
}); 

var User = module.exports = mongoose.model('User', UserSchema); 

當我運行的服務器,並提交來獲取用戶名,我得到以下錯誤

TypeError: Cannot read property 'newPost' of undefined 
    at /home/a0_/Projects/Node/forum/routes/index.js:26:12 

整個代碼可以在https://github.com/nerditall/forum

回答