Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2061|回复: 3
打印 上一主题 下一主题

nodejs mongodb开发过程中问题记录

[复制链接]

437

主题

566

帖子

2381

积分

金牌会员

Rank: 6Rank: 6

积分
2381
跳转到指定楼层
楼主
发表于 2016-1-2 13:03:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 jimu 于 2016-1-2 13:10 编辑

1. 500 (Internal server error)
  1.   app.post('/recordAdd', function(req, res, next) {  
  2.     var currentUser = req.session.user;

  3. 上面currentUser 这个变量如果没有获取,会报这个错误,因为后面用到
复制代码
2.[TypeError: Cannot read property 'ObjectID' of undefined]
var BSON = require('mongodb').BSONPure;
   var obj_id = BSON.ObjectID.createFromHexString("568745c4dfde2f4c1e74490a");
改为:
var obj_id = require('mongodb').ObjectID.createFromHexString("568745c4dfde2f4c1e74490a");









回复

使用道具 举报

437

主题

566

帖子

2381

积分

金牌会员

Rank: 6Rank: 6

积分
2381
沙发
 楼主| 发表于 2016-1-2 17:42:17 | 只看该作者
本帖最后由 jimu 于 2016-1-2 17:43 编辑

3. 使用ajax时,nodejs中的render跳转功能不可用
跳转,这个逻辑在用form表单提交时是正常的,但是如果用jQuery的$.ajax函数提交,res.render(“login”);就不会转到登陆页面,对应的ajax代码如下:$.ajax({
   type: 'POST',
   url: '/recordQueryForModify',
   contentType: "application/json; charset=utf-8",
    data: postjsonStr  });
在nodejs处可以获取到post 来的信息,说明ajax语句没问题,但是为什么就不能跳转呢?是不是form表单提交和ajax的post在连接方面有区别?

ajax 是用来传递数据的。客户端需要根据情况,进行跳转:window.location = url;这个语句写在ajax的回调函数里。根据后台返回的数据,判断逻辑进行跳转。


回复 支持 反对

使用道具 举报

437

主题

566

帖子

2381

积分

金牌会员

Rank: 6Rank: 6

积分
2381
板凳
 楼主| 发表于 2016-1-2 21:44:23 | 只看该作者
本帖最后由 jimu 于 2016-1-2 21:59 编辑

4.ajax成功返回后,如何把数据以post方法传送?
$.ajax({
    type: 'POST',
    url: '/recordQueryForModify',
    contentType: "application/json; charset=utf-8",
    data: postjsonStr,
    success: function(data){
      window.location = "/publish?post="+data.post;    //这如何向另一个页面以post方式传递?
    },
    error: function (message) {
    },
  });


创建form
生成hidden
js触发提交

回复 支持 反对

使用道具 举报

437

主题

566

帖子

2381

积分

金牌会员

Rank: 6Rank: 6

积分
2381
地板
 楼主| 发表于 2016-1-2 22:47:28 | 只看该作者
本帖最后由 jimu 于 2016-1-2 23:13 编辑

5.ejs文件中 <%=locals.post.title%>  获取服务端返回的变量,那对应的js文件中应该怎么写?var title = '<%=locals.post.title%>';  这样写不行呀?
理解下ejs的原理:
ejs 在生成 html 的时候,会插值到 <%= %> 的地方。这是在服务端做的。
外部的引用的 js,是在 ejs 生成了 html 之后,由浏览器负责解释。
逻辑:
需要将你的 要用的变量的值在ejs文件中选保存起来,此位置能被外部js访问的地方。
解决方案:
  1. <script type="text/javascript">
  2.     var post = '<%- JSON.stringify(locals.post) %>';
  3.     post = JSON.parse(post);
  4. </script>
  5. <script type="text/javascript" src="/javascripts/publish.js"></script>

  6. publish.js中的调用如下:
  7. alert(post.title);
复制代码





回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-11-1 08:34 , Processed in 0.055215 second(s), 18 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表