我在node.js有一个网站; 创建一个页面,说mypage我注意到我需要创建一个layout.jade和mypage.jade文件.如果我mypage.jade没有显示代码,那么首先我必须填写layout.jade页面的布局.
我的问题是,如何在内部引用layout.jade我想加载mypage.jade某个容器中的内容,例如?我可以使用相同布局的不同页面吗?我怎样才能做到这一点?
谢谢
我使用$ getJSON来命中Phonegap和Android下的node.js端点.代码看起来像这样
$.getJSON(
serverURL + "/login?callback=?",
"playerId=" + playerId + "&pwd=" + pwd,
function(data){
theCallbackFunction.call(null, JSON.parse(data));
},
function(jqXHR, textStatus, errorThrown) {
alert('error ' + textStatus + " " + errorThrown);
}
);
Run Code Online (Sandbox Code Playgroud)
为响应登录请求,我的服务器发送回会话cookie.如果在浏览器中启用了"第三方Cookie",则此cookie仅在后续AJAX请求中被接受并返回.我发现较旧的Android设备(例如2.2)默认允许这样做,但新设备(3.2)不允许这样做.
是否可以强制Phonegap为我的Android应用程序启用第三方Cookie?
我正在启动一个新的Node.js应用程序,这一次,我正在尝试正确组织代码而不是将所有内容放在同一个文件中.
我现在只有一个简单的设置server.coffee:
express = require 'express'
app = module.exports = express.createServer()
## CONFIGURATION ##
app.configure () ->
app.set 'views', __dirname + '/views'
app.set 'view engine', 'jade'
app.use express.bodyParser()
app.use express.logger('dev')
app.use express.profiler()
app.use express.methodOverride()
app.use app.router
app.use express.static(__dirname + '/public')
app.configure 'development', () ->
app.use express.errorHandler({dumpExceptions: true, showStack: true})
app.configure 'production', () ->
app.use express.errorHandler()
app.get '/', (req,res) ->
res.render 'index'
title: 'Express'
## SERVER ##
port = process.env.PORT || 3000
app.listen port, () ->
console.log "Listening on …Run Code Online (Sandbox Code Playgroud) 我正在使用带有ejs的express(node.js的web框架).现在我想创建自己的过滤器,如ejs github页面所述:
To add a filter simply add a method to the .filters object:
ejs.filters.last = function(obj) {
return obj[obj.length - 1];
};
Run Code Online (Sandbox Code Playgroud)
问题:我如何访问该ejs对象?我在app.js中尝试过(天真):
ejs.filters.myfilter = function (obj) {
....
}
Run Code Online (Sandbox Code Playgroud)
这给了我错误:
ReferenceError: ejs is not defined
Run Code Online (Sandbox Code Playgroud) 这里类似问题中提到的旧方法如下:
var editor = ace.edit("editor");
var Range = ace.require('ace/range').Range;
editor.setReadOnly(true);
editor.setTheme("ace/theme/github");
editor.getSession().setMode("ace/mode/javascript");
editor.getSession().addMarker(new Range(1, 0, 15, 0), "ace_active_line", "background");
Run Code Online (Sandbox Code Playgroud)
不幸的是它不起作用,你可以在这里看到:
http://jsbin.com/acotuv/1/edit
有什么建议?
这篇文章似乎暗示有include模板这样的东西.我已经进行了明显的谷歌搜索,但没有找到任何文档.
这些是什么?
我遇到了TJ Holowaychuk关于多部分支持的帖子以及bodyParser现在如何直接执行我曾经使用过强大的东西.我认为它非常方便,同时我现在对如何处理感到困惑: - 上传大文件?connect-form是否处理支持上传大小为100MB的文件所需的所有内容? - 上传期间报告进度?我以前在更改之前调用了form.parse(..)事件,因为它全部由bodyParser处理,它从未调用过...
Holowaychuk说:"这样做的缺点是,如果您希望报告上传进度,或者在请求流式传输时访问文件和字段,则必须直接使用强大的"(http://tjholowaychuk.com/).我试着直接使用它.它对我有用的唯一方法是:
... app.use(app.router); 之前:
app.use(express.bodyParser());
所以我认为这解决了我的问题,直到我想使用无效的会话,因为必须在bodyparser之前放置路由器才能使上传工作,并且:app.use(express.cookieParser()); app.use(express.session({...})必须遵循:app.use(express.bodyParser());抛出会话....
所以:
什么是处理/配置文件上传的正确方法,以便报告进度工作和会话一起工作,使用这种新方式连接形式的小文件和大文件?
我对Node并没有超级经验,所以如果你做了回答,请尽可能记住.
谢谢!
当我这样做:
client_id = req.param("client_id") ? null
client =
name: req.param "clientName"
status: 'active'
Client.update {_id: client_id}, client, {upsert: true}, (err, updRes) ->
if err
res.json
error: "Couldn't create client"
else
res.json client
Run Code Online (Sandbox Code Playgroud)
除了null _id字段外,它将创建一个新的客户记录.我假设这是因为upsert的插入部分看起来query要创建文档.我怎么能这样做,如果没有找到doc,那么插入一个新的ObjectId?
我正在学习Node.js,我已经阅读了一些教程,比如The Node Beginner Book,用于学习核心功能.但是我越是阅读一些例子,我开始收集的疑虑就越多.
在另一个从教程中获得的示例中,我们可以看到,对于密钥的CRUD"读取"请求/documents/titles.json,我们返回一个值:
app.get('/documents/titles.json', loadUser, function(req, res) {
Document.find({ user_id: req.currentUser.id },[], { sort: ['title', 'descending'] },
function(err, documents) {
res.send(documents.map(function(d) {
return { title: d.title, id: d._id };
}));
});
});
Run Code Online (Sandbox Code Playgroud)
在此示例中,该函数loaduser()用于身份验证:
function loadUser(req, res, next) {
if (req.session.user_id) {
User.findById(req.session.user_id, function(err, user) {
if (user) {
req.currentUser = user;
next();
} else {
res.redirect('/sessions/new');
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
我不明白的是:
loadUser()函数有三个参数:req,res,next,但至少我没有看到你如何从app.get()"req"参数传递给loadUser().从哪里来?loadUser()函数内部,当你执行时next(),它意味着函数app.get() …如何在Mongoose中调用SlaveOK?
例如,我有这个:
SiteModel.find({}, function(err, docs) { .... } );
Run Code Online (Sandbox Code Playgroud)
我应该这样做吗?
SiteModel.slaveOK().find({}, function(err,docs) { ... } );
Run Code Online (Sandbox Code Playgroud) node.js ×8
express ×6
coffeescript ×2
javascript ×2
mongodb ×2
mongoose ×2
pug ×2
ace-editor ×1
android ×1
cloud9-ide ×1
connect ×1
cordova ×1
ejs ×1
file-upload ×1
jquery ×1
slave ×1
upsert ×1