-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));
}
...
}
什么是“不行”的意思是在这种情况下?你在控制台中遇到错误,或者...? – nnnnnn
控制台显示我:查询[名称] is57c2c29bfcf033970f2bbecf 帖子数量:0。查询是[对象对象] – Frank
你期望它显示什么? (以及“帖子数量:0”来自哪里?显示的代码中没有内容应输出该内容)。当您说'query [name] = name'时,您创建一个名称和值都相同的属性。也就是说,如果'name'是'“abc”',那么你正在创建'{abc:“abc”}'。 – nnnnnn