Coder Social home page Coder Social logo

n-blog's Issues

最好在数据库连接那添加如何使用用户名和密码验证连接

我找这个方法花了几个小时,怕还有人看不到。。
方法:
在setting.js的host的主机名前加“用户名:密码@”
在app.js中
app.use(express.session({
secret: settings.cookieSecret,
key: settings.db,
cookie: {maxAge: 1000 * 60 * 60 * 24 * 30},//30 days
store: new MongoStore({
db: settings.db,
})
}));
在db: setting.db下加入username: '用户名'和password: '密码'
由于connect-mongodb是根据数据库建立连接,所以需要在指定数据库建用户,在admin建立的不能使用

run your code forEach undefined error

TypeError: /home/nick/Projects/N-blog/views/index.ejs:9
    7|     日期:<%= post.time.minute %> | 
    8|     标签:
 >> 9|     <% post.tags.forEach(function(tag, index){ %>
    10|       <% if(tag.tag){ %>
    11|         <a class="tag" href="/tags/<%= tag.tag %>"><%= tag.tag %></a>
    12|       <% } %>

Cannot call method 'forEach' of undefined

model模块都有问题

每个model模块中,都使用了这个方法。
//打开数据库
mongodb.open(function (err, db) {
..............

难道对每个请求都要open一次数据库么?
尽快修改吧,我看fork人不少,不要误人子弟啊。哈哈

Cannot call method 'forEach' of undefined mac 10.8.2

TypeError: Cannot call method 'forEach' of undefined
at /Users/liqy/node.js/blog/models/post.js:107:24
at /Users/liqy/node.js/blog/node_modules/mongodb/lib/mongodb/collection.js:1012:5
at Cursor.nextObject (/Users/liqy/node.js/blog/node_modules/mongodb/lib/mongodb/cursor.js:677:5)
at commandHandler (/Users/liqy/node.js/blog/node_modules/mongodb/lib/mongodb/cursor.js:658:14)
at null. (/Users/liqy/node.js/blog/node_modules/mongodb/lib/mongodb/db.js:1651:20)
at g (events.js:175:14)
at EventEmitter.emit (events.js:106:17)
at Server.Base._callHandler (/Users/liqy/node.js/blog/node_modules/mongodb/lib/mongodb/connection/base.js:409:25)
at /Users/liqy/node.js/blog/node_modules/mongodb/lib/mongodb/connection/server.js:562:20
at MongoReply.parseBody (/Users/liqy/node.js/blog/node_modules/mongodb/lib/mongodb/responses/mongo_reply.js:131:5)

Cannot find module 'readable-stream' 报错,应该怎么解决?

学习到第三章的时候,替换成

app.use(express.bodyParser({ keepExtensions: true, uploadDir: './public/images' }));

会报错

Error: Cannot find module 'readable-stream'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (D:\blog\node_modules\express\node_modules\connect\nod
e_modules\multiparty\index.js:3:14)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)

请问如何解决,搜索了一下,没有解决。

静态资源访问疑惑

前提:

app.use(express.static(__dirname + '/public'));

疑惑:

//localhost:3000/xx.jpg  ok
//localhost:3000/x/xx.jpg ok
//localhost:3000/x/x/xx.jpg error

前面两种资源文件都访问的到,可最后一种资源文件访问不到。请问下是什么原因?

部署到heroku最后一步出现问题

部署到heroku之前的最后一步,在ssh目录创建文件config,
Host heroku.com
User yourName
Hostname 107.21.95.3
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
port 22

第四行 publickey需要自己到heroku去申请吗,去申请key的时候,提示的创建key目录没有key文件。

git push heroku master
出现问题是: permission denied(publickey)
could not read from remote repository

mongo使用的疑问

初始化Db(db, new Server(host, post, {safe: true}); 后每次mongo操作都要去open,这样如果多个请求并发时后面的请求open一个还没有被close的数据库都是失败的这个怎么解决。

第一章做到验证是否注册成功那一步时报错

Object # has no method 'redirect'
看到类似问题说跟flash的引入有关,没有解决办法,求大神解答
我的express版本是3.4.7。

完整错误代码:

c:\Users\u\nodejs\blog\node_modules\mongodb\lib\mongodb\connection\base.js:242
throw message;
^
TypeError: Object # has no method 'redirect'
at module.exports.app.get.res.render.title (c:\Users\u\nodejs\blog\routes\in
dex.js:52:8)
at User.save (c:\Users\u\nodejs\blog\models\user.js:38:5)
at c:\Users\u\nodejs\blog\node_modules\mongodb\lib\mongodb\collection\core.j
s:216:9
at Server.Base._callHandler (c:\Users\u\nodejs\blog\node_modules\mongodb\lib
\mongodb\connection\base.js:442:41)
at Server.connect.connectionPool.on.server._serverState (c:\Users\u\nodejs\b
log\node_modules\mongodb\lib\mongodb\connection\server.js:485:18)
at MongoReply.parseBody (c:\Users\u\nodejs\blog\node_modules\mongodb\lib\mon
godb\responses\mongo_reply.js:68:5)
at Server.connect.connectionPool.on.server._serverState (c:\Users\u\nodejs\b
log\node_modules\mongodb\lib\mongodb\connection\server.js:443:20)
at EventEmitter.emit (events.js:96:17)
at _connect (c:\Users\u\nodejs\blog\node_modules\mongodb\lib\mongodb\connect
ion\connection_pool.js:191:13)
at EventEmitter.emit (events.js:99:17)
DEBUG: Program node c:\Users\u\nodejs\blog\app exited with code 1

DEBUG: Starting child process with 'node c:\Users\u\nodejs\blog\app'
Failed to load c++ bson extension, using pure JS version
Express server listening on port 3000

第一章,404 Not Found Problem

我照着教程,做到了[注册和登陆] - > [index的设计]这一步
然后运行app,访问localhost:3000。
报出了404的错。这个时候mongodb是连接正常,没有报错。
瞧着好像上connect-mongo出错了。因为提示的信息太少,google,baidu都查不到。请帮忙看看错误原因。

具体错误如下:
Not Found

404

Error: Not Found
at Object.app.use.res.render.message as handle
at next (/Users/dl/Project/blog/node_modules/express/node_modules/connect/lib/proto.js:193:15)
at /Users/dl/Project/blog/node_modules/express/node_modules/connect/node_modules/express-session/index.js:350:9
at /Users/dl/Project/blog/node_modules/connect-mongo/lib/connect-mongo.js:222:17
at /Users/dl/Project/blog/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/collection/query.js:147:5
at Cursor.nextObject (/Users/dl/Project/blog/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/cursor.js:733:5)
at commandHandler (/Users/dl/Project/blog/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/cursor.js:713:14)
at /Users/dl/Project/blog/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/db.js:1806:9
at Server.Base._callHandler (/Users/dl/Project/blog/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/connection/base.js:442:41)
at /Users/dl/Project/blog/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/connection/server.js:485:18

求教,有个地方搞不懂。

/models / user.js 里的这一段

User.prototype.save = function(callback) {
  //要存入数据库的用户文档
  var user = {
      name: this.name,
      password: this.password,
      email: this.email
  };
  //打开数据库
  mongodb.open(function (err, db) {
    if (err) {
      callback(err);//错误,返回 err 信息
    }
    //读取 users 集合
    db.collection('users', function (err, collection) {
      if (err) {
        mongodb.close();
        callback(err);//错误,返回 err 信息
      }
      //将用户数据插入 users 集合
      collection.insert(user, {safe: true}, function (err, user) {
        mongodb.close();//关闭数据库
        callback(null);//成功!err 为 null
      });
    });
  });
};
if (err) {
  callback(err);//错误,返回 err 信息
}
这个地方为什么不用return callback(err);如果出错了为什么不让函数返回,停止后续的操作?求教

comment的问题

在加入comment之前发表的文章不能回复,且会出现错误
建议在comment.ejs中加入对comments是否存在的判断

一个语法问题

在模板里面写入

home <% if(user){ %> post logout <% } else { %> login register <% } %> 如果判断中的user不存在,会在页面报错,user is not defined。 怎么解决这类问题呢,改怎么写呢

第五章 分页 文章的总数量为10的倍数存在问题

如果文章的总数量或某个用户的文章数量为10的倍数,则会出现最后一页的页脚仍然会有“下一页”标签,但实际上下一页是没有内容的。
paging.ejs 中 if(postsLen==10)的判断可能还不够,还要加上其他的判断条件吧。

数据库连接问题

使用connect-mongo 版本0.3.2
启动程序总是得到下面消息
Please ensure that you set the default write concern for the database by setting =
= one of the options =
…… ……
将连接形式更改了一下
module.exports = new Db(settings.db, new Server(settings.host, Connection.DEFAULT_PORT, {}));
更改为
module.exports = new Db(settings.db, new Server(settings.host, Connection.DEFAULT_PORT, {}), {safe: true});

便正常了。

《番外篇之——使用 KindEditor》有一个问题。

在“使用KindEditor”中:

我们也可以使用 KindEditor 默认的(default)编辑器样式,将以上 KindEditor.ready 替换为以下代码即可:

KindEditor.ready(function(K) {
  window.editor = K.create('#kindeditor');
});

里面这段代码应该是

var editor;
KindEditor.ready(function(K) {
  editor = K.create('textarea');
});

第二章——使用markdown

markdown这个插件在转换过程中会为段落添加额外的<p>标签,直接发送到前端可能会造成困扰,所以服务端需要多做一步处理:

    var markdown = require('markdown').markdown

    docs.forEach(function (doc) {
      var tree = markdown.parse(doc.post)
      tree.forEach(function (jsonml) {
        // 移除`para`标记
        if (jsonml[0] == "para") { jsonml.splice(0,1) } }
      })
    });

    var html = markdown.renderJsonML( markdown.toHTMLTree(tree) );

发现头像部分有问题啊

不知道是我自己的问题还是教程就没详细说这里

我发现只有存头像到users表, 没看到哪里有取users 表的 head呢

番外篇——使用Github登录

文中提到的两个问题:

  1. GitHub 用户名和本地数据库用户名重名的问题。
  2. 不能访问使用 GitHub 账户登录的用户的用户页。

解决方案个人觉得有很多可完善的部分,可以在session.user中存储用户的账号类型字段(比如:{type:github}),这样相同用户名也可以登录,获取个人博客列表的时候再次检查type字段,如果为github直接跳过用户名的检查(或在数据库中特别存储一个github-username的字段,具体实现不一而足了)

完成了第一章,报了一个bug:posts is not defined

Express
500 ReferenceError: d:\nodejs\blog\views\index.ejs:2 1| <%- include header %> >> 2| <% posts.forEach(function(post,index){ %> 3|

<%= post.title %>

4|

5| 作者:<%= post.name %> | posts is not defined
1| <%- include header %>

2| <% posts.forEach(function(post,index){ %>
3|
<%= post.title %>
4|
5| 作者:<%= post.name %> |
posts is not defined
at eval (eval at (d:\nodejs\blog\node_modules\ejs\lib\ejs.js:236:14), :31:52)
at eval (eval at (d:\nodejs\blog\node_modules\ejs\lib\ejs.js:236:14), :33:35)
at d:\nodejs\blog\node_modules\ejs\lib\ejs.js:249:15
at Object.exports.render (d:\nodejs\blog\node_modules\ejs\lib\ejs.js:287:13)
at View.exports.renderFile as engine
at View.render (d:\nodejs\blog\node_modules\express\lib\view.js:76:8)
at Function.app.render (d:\nodejs\blog\node_modules\express\lib\application.js:505:10)
at ServerResponse.res.render (d:\nodejs\blog\node_modules\express\lib\response.js:756:7)
at d:\nodejs\blog\routes\index.js:20:7
at callbacks (d:\nodejs\blog\node_modules\express\lib\router\index.js:161:37)

关于验证

Hi nswbmw,
非常感谢你提供的例子。
刚刚接触nodejs,想做个网站,之前有mvc的经验,看了下express-validator,感觉在里面直接写req.assert很不合适,还有多语言,有没有这么一个插件,直接在function内部就把验证处理完了?

类似于use,不过是基于action的,验证通过了再next,统一验证入口,再加上多语言。

找了很久,都没有合适的,感觉应该在route初始化的时候处理。
希望得到建议,多谢。

番外篇——使用generic pool

数据库连接这里是有问题的:

    pool.acquire(function (err, mongodb) {
      mongodb.open(function (err, db) {
        ...
        pool.release(mongodb);
      });
    });

每次通过pool acquire了一个连接之后,我们在里面创建了一个mongodb连接,但是并没有销毁它(在pool的destory接口处打个log就知道了)。当并发量达到min属性的参数(例子中是5)就会出现重复打开数据库的错误。

解决方法是我们只在pool的create接口中打开mongo的连接:

     create   : function(callback) {
        var mongodb = Db();
        mongodb.open(function (error, db) {
            if (error) return callback(error)
            callback(null, db);
        })
    },

后面在pool中acquire/release即可

推荐阅读:mongodb驱动的正确使用方法

一个小问题

之前已经提交的文章 post 中没有comments,在添加 comments 后,会提示:TypeError: Cannot call method 'forEach' of undefined
建议在
if(doc){
doc.post = markdown.toHTML(doc.post);
doc.comments.forEach(function(comment){
comment.content = markdown.toHTML(comment.content);
});
}
中增加一个关于 doc.comments 的类型判断。

你好,第七章报错

TypeError: Cannot call method 'slice' of null

对应代码位置:
//解析markdown为html
docs.forEach(function(doc) {
doc.post = markdown.toHTML(doc.post);
});

comment.ejs修改

comments.ejs 必须添加 判断语句 <%if(post.comments && post.comments.length>0){%>,否则如果打开一个没有留言的文章的话,会出错

第五章URL编码问题

首先感谢您的教程,为我们初学者提供了很好的资料
我在第五章发现有一个问题
这段代码

app.post('/edit/:name/:day/:title', function (req, res) {
  var currentUser = req.session.user;
  Post.update(currentUser.name, req.params.day, req.params.title, req.body.post, function (err) {
    var url = '/u/' + req.params.name + '/' + req.params.day + '/' + req.params.title;
    if (err) {
      req.flash('error', err); 
      return res.redirect(url);//出错!返回文章页
    }
    req.flash('success', '修改成功!');
    res.redirect(url);//成功!返回文章页
  });
});

最后的redirect如果url不转码,一旦title是中文字符,那么就会报400
我将url变量改了

var url = '/u/' + req.params.name.trim() + '/' + req.params.day.trim() + '/' + encodeURIComponent(req.params.title.trim());

修复了这个错误。

N-blog第四章

还要改"index.ejs"里边标题跟作者的"href",不然没法完成跳转

在使用mongo进行用户注册时提示数据库错误

在点击注册时,无法插入数据!

Error: db object already connecting, open cannot be called multiple times

mongo在save和open时异常!

mac下mongo版本为:2.6.0版本
换了一台ubuntu,没有此错误,查看mongo版本为:2.4.9.

代码无误,无法存储数据!

部署到heroku mongoHQ无法连接, 本地连接mongoHQ运行正常

部署到Heroku mongoHQ 无法链接。heroku logs 如下:

node app.js
2014-01-05T18:26:28.637200+00:00 app[web.1]: > [email protected] start /app
2014-01-05T18:26:28.637204+00:00 app[web.1]:
2014-01-05T18:26:28.949332+00:00 app[web.1]: Express server listening on port 14713
2014-01-05T18:26:29.322966+00:00 heroku[web.1]: State changed from starting to up
2014-01-05T18:26:34.854945+00:00 app[web.1]:
2014-01-05T18:26:34.855528+00:00 app[web.1]: throw new Error('Error connecting to database');
2014-01-05T18:26:34.855547+00:00 app[web.1]: ^
2014-01-05T18:26:34.858285+00:00 app[web.1]: Error: Error connecting to database
2014-01-05T18:26:34.858288+00:00 app[web.1]: at /app/node_modules/connect-mongo/lib/connect-mongo.js:176:17
2014-01-05T18:26:34.858291+00:00 app[web.1]: at /app/node_modules/mongodb/lib/mongodb/db.js:273:18
2014-01-05T18:26:34.858293+00:00 app[web
.1]: at /app/node_modules/mongodb/lib/mongodb/db.js:351:18
2014-01-05T18:26:34.858295+00:00 app[web.1]: at Server.close (/app/node_modules/mongodb/lib/mongodb/connection/server.js:210:38)
2014-01-05T18:26:34.858296+00:00 app[web.1]: at Db.close (/app/node_modules/mongodb/lib/mongodb/db.js:347:21)
2014-01-05T18:26:34.858298+00:00 app[web.1]: at /app/node_modules/mongodb/lib/mongodb/db.js:271:21
2014-01-05T18:26:34.858300+00:00 app[web.1]: at null. (/app/node_modules/mongodb/lib/mongodb/connection/server.js:563:7)
2014-01-05T18:26:34.858301+00:00 app[web.1]: at EventEmitter.emit (events.js:106:17)
2014-01-05T18:26:34.858303+00:00 app[web.1]: at null. (/app/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:140:15)
2014-01-05T18:26:34.858304+00:00 app[web.1]: at EventEmitter.emit (events.js:98:17)
2014-01-05T18:26:34.867250+00:00 app[web.1]:
2014-01-05T18:26:34.872683+00:00 app[web.1]: npm ERR! Exit status 8
2014-01-05T18:26:34.873001+00:00 app[web.1]: npm ERR! Failed at the [email protected] start script.
2014-01-05T18:26:34.873752+00:00 app[web.1]: npm ERR! node app.js
2014-01-05T18:26:34.872824+00:00 app[web.1]: npm ERR!
2014-01-05T18:26:34.873648+00:00 app[web.1]: npm ERR! Tell the author that this fails on your system:
2014-01-05T18:26:34.855280+00:00 app[web.1]: /app/node_modules/connect-mongo/lib/connect-mongo.js:176
2014-01-05T18:26:34.872504+00:00 app[web.1]: npm ERR! [email protected] start: node app.js
2014-01-05T18:26:34.873100+00:00 app[web.1]: npm ERR! This is most likely a problem with the Blog package,
2014-01-05T18:26:34.873556+00:00 app[web.1]: npm ERR! not with npm itself.
2014-01-05T18:26:34.873849+00:00 app[web.1]: npm ERR! You can get their info via:
2014-01-05T18:26:34.873946+00:00 app[web.1]: npm ERR! npm owner ls Blog
2014-01-05T18:26:34.874048+00:00 app[web.1]: npm ERR! There is likely additional logging output above.
2014-01-05T18:26:34.874169+00:00 app[web.1]: npm ERR! System Linux 3.8.11-ec2
2014-01-05T18:26:34.874445+00:00 app[web.1]: npm ERR! command "/app/vendor/node/bin/node" "/app/vendor/node/bin/npm" "start"
2014-01-05T18:26:34.874577+00:00 app[web.1]: npm ERR! cwd /app
2014-01-05T18:26:34.874701+00:00 app[web.1]: npm ERR! node -v v0.10.24
2014-01-05T18:26:34.874826+00:00 app[web.1]: npm ERR! npm -v 1.3.21
2014-01-05T18:26:34.874944+00:00 app[web.1]: npm ERR! code ELIFECYCLE
2014-01-05T18:26:34.876377+00:00 app[web.1]: npm ERR!
2014-01-05T18:26:34.876491+00:00 app[web.1]: npm ERR! Additional logging details can be found in:
2014-01-05T18:26:34.876585+00:00 app[web.1]: npm ERR! /app/npm-debug.log
2014-01-05T18:26:34.876785+00:00 app[web.1]: npm ERR! not ok code 0
2014-01-05T18:26:34.853753+00:00 heroku[router]: at=error code=H13 desc="Connection closed without response" method=GET path=/ host=xthought.herokuapp.com fwd="66.175.221.233" dyno=web.1 connect=0ms service=36ms status=503 bytes=0
2014-01-05T18:26:35.972401+00:00 heroku[web.1]: Process exited with status 1

关于给的第一章部分的css

貌似楼主的css有点问题,你再试试看,我后来看了你完整版本里的css,你貌似把之后的版本的css跟着部分的弄乱了,就是那个nav部分的

markdown的使用有问题

markdown的写法有问题了,应该是 "node-markdown": "*" ,然后 var markdown = require('markdown').markdown 为 var markdown = require('node-markdown').Markdown、markdown.toHTML("string") 为 markdown("string")

mongodb问题

你好,我的Mongodb部署在其他服务器上 运行代码出现Error connecting to database 错误,settings.js我已经改了,工程能够正常启动,查看Mongodb,名称叫blog的db也已经自动创建了,就是在访问首页的时候报这个错误。能帮帮我么

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.