2016-08-30 61 views
-4

我有一个实用函数,它将函数的参数'name page callback'传递给函数。为什么不工作,因为我尝试了很多次?为什么对象变量属性在nodejs中不起作用

PLUS:似乎'query.tag_id = name'适用于我,但为什么query [name] = name不起作用,因此我可以传递任何我喜欢的名称;也就是说,我想将变量/ name/as属性名称,以便我可以使用任何我喜欢的名称。例如,当我传递user_id变量作为名称值时,我可以通过user_id找到帖子。当我传递tag_id变量作为名称值时,我还可以通过它的tag_id找到帖子,因此它比当我使用'query.user_id = name'做它时更灵活,其名称只能是user_id变量或值

没有图书馆使用明确和NODEJS WITH CONNECT-FLESH,MONGOOSE等。

// post_proxy/post.js

"use strict"; 
let moment = require('moment'), 
    Post = require('../models/Post'), 
    User = require('../models/User'), 
    Comment = require('../models/Comment'), 
    postProxy = require('../db_proxy/post'), 
    tagProxy = require('../db_proxy/tag'); 
module.exports = { 
     getTen: (name,page,callback)=>{ 

       var query = {}; 
       //name = query; 
       if(name){ 

        query[name] = name; 
        console.log('query[name] is'+ Object.keys(query)); 

       } 
       Post.count(query, (err, count)=>{ 

        if (err) { 
          return callback(err); 
        }else{ 
          console.log(`Number of posts: ${count} . query is ${query}`); 

          Post.find(query).skip((page-1)*10).limit(10).sort({created_at: -1}).exec((err,posts)=>{ 
            if (err) { 
             return callback(err); 
            } 
            console.log('Posts inthe getTen function is: '+posts); 
            const modifiedPosts = posts.map(post=>{ 
             return post.processPost(post); 
            }); 

            console.log('modifiedPosts: '+modifiedPosts); 
            callback(null, modifiedPosts, count);//provide the params(caluated values),and what to do? you need to figure it out yourself 


          }); 
        } 

       }); 
} 

//控制器/ post.js:

"use strict"; 
let moment = require('moment'), 
    Post = require('../models/Post'), 
    User = require('../models/User'), 
    Comment = require('../models/Comment'), 
    postProxy = require('../db_proxy/post'), 
    tagProxy = require('../db_proxy/tag'); 

    module.exports = { 
     getTagsPost: (req,res)=>{ 
        const tag_id = req.params.tag_id; 
        const page = req.query.p ? parseInt(req.query.p) : 1; 
        //let loginedUser; 
        console.log('entering into the tagpost'); 


        postProxy.getTen(tag_id, page, (err, posts, count)=> { 
         if (err) { 
         console.log('some error with getting the 10 posts:'+ err); 
         //next(err); 
         posts = []; 
         } 
         // if(req.user){ 
         //  loginedUser = req.user.processUser(req.user); 
         // } 
         //userProxy.getUserById(user_id, theuser=>{ 
         console.log('tag posts for'+ tag_id +posts); 

         res.render('post/tagPosts', { 
           title: 'specific tag page', 
           user: req.user ? req.user.processUser(req.user) : req.user, 
           //postUser: req.user ? (req.user._id == user_id ? loginedUser : theuser) : theuser, 
           posts: posts, 
           page: page, 
           isFirstPage: (page - 1) == 0, 
           isLastPage: ((page - 1) * 10 + posts.length) == count, 
           messages: { 
            error: req.flash('error'), 
            success: req.flash('success'), 
            info: req.flash('info'), 
           }, // get the user out of session and pass to template 
         }); 


        });    

     }, 
     ... 
    } 

//路线:

router.get('/tag/:tag_id', post.getTagsPost); 

UPDATE: 没有找到一个答案,所以我改变它以下并解决问题:

 getTen: (name,tag_id,user_id,page,callback)=>{ 

       var query = {}; 
       if(name){ 
        if(user_id){   
         query.user_id = name; 
        }else{ 
         query.tag_id = name; 

        } 
        console.log('query[name] is'+ Object.keys(query)); 
       } 
       ... 
} 
+4

什么是“不行”的意思是在这种情况下?你在控制台中遇到错误,或者...? – nnnnnn

+0

控制台显示我:查询[名称] is57c2c29bfcf033970f2bbecf 帖子数量:0。查询是[对象对象] – Frank

+2

你期望它显示什么? (以及“帖子数量:0”来自哪里?显示的代码中没有内容应输出该内容)。当您说'query [name] = name'时,您创建一个名称和值都相同的属性。也就是说,如果'name'是'“abc”',那么你正在创建'{abc:“abc”}'。 – nnnnnn

回答

0

UPDATE:所以我将其更改为以下问题,解决问题没有找到答案:

 getTen: (name,tag_id,user_id,page,callback)=>{ 

       var query = {}; 
       if(name){ 
        if(user_id){   
         query.user_id = name; 
        }else{ 
         query.tag_id = name; 

        } 
        console.log('query[name] is'+ Object.keys(query)); 
       } 
       ... 
} 
相关问题