标签: ejs

Node.JS,Express和MongoDB ::多个集合

我正在使用Node.JS,Express,MongoDB和EJS.我有一个关于一个数据库下的多个MongoDB集合的问题,并调用它们在前端使用.我有3个集合,经过大量研究后未发现如何调用多个集合而没有错误.

我知道将一切存储在一个集合下并不是一个问题,但我觉得最好的方法是按类别将它们分开.这是我的db/collection调用:

app.use(express.bodyParser());
var MongoClient = require('mongodb').MongoClient;

app.get('/', function(req, res){
  MongoClient.connect("mongodb://localhost:27017/michael", function(err, db) {
    if(!err) {
      console.log("We are connected");
    }
    db.collection("portfolio", function(err, collection) {
      collection.find().sort({order_num: 1}).toArray(function(err, result) {
        var portfolio = [];
        if (err) {
          throw err;
        } else {
          for (i=0; i<result.length; i++) {
            portfolio[i] = result[i];
          }
          res.render('index.html', {portfolio: portfolio});
        }
      });
    });
  });
});
Run Code Online (Sandbox Code Playgroud)

我怎么能多次调用其他集合,例如"约"集合等?我尝试添加另一个......

db.collection("about", function(err, collection) {
Run Code Online (Sandbox Code Playgroud)

...内...

MongoClient.connect("mongodb://localhost:27017/michael", function(err, db) {
Run Code Online (Sandbox Code Playgroud)

...但它在终端控制台日志中给出了错误.

提前致谢.

编辑:

这是我正在尝试做的,这给了我一个错误:

app.get('/', function(req, res){
  MongoClient.connect("mongodb://localhost:27017/michael", function(err, db) {
    if(!err) { …
Run Code Online (Sandbox Code Playgroud)

collections ejs mongodb node.js express

6
推荐指数
1
解决办法
1万
查看次数

grunt-contrib-jasmine与PhantomJS,EJS模板和XMLHttpRequest异常101

我正在尝试为一个简单的项目建立一个基本的单元测试环境,但是我遇到了一个奇怪的障碍,经过数小时的研究后我无法克服这个障碍.

出于某种原因,我Error: NETWORK_ERR: XMLHttpRequest Exception 101直接从EJS返回尝试使用XHR加载模板,但只是偶尔使用一次.

案例很简单,我有一个骨干应用程序,实例化一个呈现EJS模板的骨干视图.这看起来像这样:

BackboneView = Backbone.View.extend({
  initialize: function() {
    this.template = new EJS({url: '/app/views/root/root.template.ejs'});
  }
});
Run Code Online (Sandbox Code Playgroud)

要设置grunt-contrib-jasmine,我的Gruntfile中有以下代码段:

jasmine: {
  cms: {
    src: "app/**/*.js"
    options: {
      specs: "tests/fe/spec/*Spec.js",
      vendor: [
          "vendor/jquery/dist/jquery.js",
          "vendor/underscore/underscore.js",
          "vendor/backbone/backbone.js",
          "vendor/ejs/ejs.js",
      ],
      keepRunner : true,
      outfile : "tests/fe/_SpecRunner.html",
      host : "http://0.0.0.0:8000"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我大部分时间都可以运行我的测试套件:

$ grunt jasmine
Running "jasmine:cms" (jasmine) task
Testing jasmine specs via PhantomJS

log: came in request!, /app/views/root/root.template.ejs

log: 200

log: /app/views/root/root.template.ejs

 website.header
   header.test()
     - test should return …
Run Code Online (Sandbox Code Playgroud)

javascript unit-testing ejs phantomjs grunt-contrib-jasmine

6
推荐指数
0
解决办法
536
查看次数

用于EJS格式的Sublime Text 3包

我正在寻找一个格式化我的ejs文件的包.我已经找到"html-css-js prettify"并将"ejs"设置为allowed_file_extensions,但这不起作用.当我在其他选项中使用de default配置时,所有表达式语言都破坏了.当我在数组"unformatted"中设置"%"时,忽略表达式语言旁边的所有代码.

你们有另一个ideia或插件与sublimeText 3一起使用吗?

ejs sublimetext3 embedded-javascript

6
推荐指数
1
解决办法
1万
查看次数

sails.js从config中获取环境值

我使用Sails.js和默认模板引擎(EJS).我有一个直接从routes config定义的视图:

配置/ routes.js

'/': {
    view: 'homepage'
 }
Run Code Online (Sandbox Code Playgroud)

有没有办法在homepage.ejs中访问环境?我需要这样的东西:

views/homepage.ejs(下一个不起作用,所以我需要一个有效的解决方案)

...
<span>Hello you are on <%= sails.env %> environment</span>
...
Run Code Online (Sandbox Code Playgroud)

呈现为:

Hello you are on production environment
Run Code Online (Sandbox Code Playgroud)

请不要建议我为此创建控制器.

我希望有办法直接从视图或路线中的当地人那里得到它,但是如何,这就是问题.

javascript ejs node.js sails.js

6
推荐指数
1
解决办法
1807
查看次数

将变量从 ejs 传递到 javascript(渲染时服务器到客户端),同时避免 XSS 问题

使用 ejs 将变量传递给 JavaScript 的公认方式似乎是这样的:

<script>
  var foo = <%- JSON.stringify(foo) %>;
</script>
Run Code Online (Sandbox Code Playgroud)

但我使用这种方法遇到了 XSS 问题,并且想知道是否有更好/更安全的方法。

此示例显示了该漏洞。

这是有效的,因为JSON.stringify("</script><script>alert('test')</script><script>")返回"</script><script>alert('test')</script><script>"并且<%- %>运算符不会转义结果。

它也适用于对象:示例在这里

<script>
var test = {
    "text": "</script><script>alert('test')</script><script>"
}
</script>
Run Code Online (Sandbox Code Playgroud)

有没有更安全的方法来处理这个问题?

javascript xss ejs node.js express

6
推荐指数
1
解决办法
2156
查看次数

节点EJS将数据传递给include

目前我正在搞乱Node和EJS模板.

但是我遇到了问题.我建立了一个由多个组件组成的页面,我将这些组件调用到索引页面,如下所示:

<% include components/header.ejs %>
Run Code Online (Sandbox Code Playgroud)

我的问题是如何将数据(json)传递给特定的包含?

我希望能够重用组件,以显示来自json的不同内容.

谢谢

javascript json ejs node.js

6
推荐指数
1
解决办法
1006
查看次数

用于.ejs模板中图像的Webpack文件/图像加载器

看起来如果图像标记在我的index.ejs模板中,我缺少在webpack配置中加载图像的设置.

我的项目中的html文件中的所有图像都在我的构建过程中被正确地重命名并加载,但.ejs文件中的图像标记被忽略.

即在我的.ejs中,如果我有<img src="../../home.png">它仍然是这样,但在正常的HTML文件中它改变为<img src="12345677.png">

我目前的装载机:

loaders: [
            //HTML Files
            {
                test: /\.html$/,
                loader: 'html'
            },
            //Transpile ES6 to ES5
            {
                test: /\.js$/,
                include: path.join(__dirname, 'src'),
                exclude: /node_modules/,
                loader: 'babel',
                query: {
                    presets: [
                        ["es2015", {"module": false}]
                    ]
                }

            },
            //Extract Normal CSS
            {
                test: /\.css$/,
                loader: ExtractTextPlugin.extract({ loader : 'css?sourceMap!autoprefixer', publicPath: "../"})

            },
            //Bundle Less into CSS Code
            {
                test: /\.less$/,
                loader: ExtractTextPlugin.extract({ loader : 'css?sourceMap!autoprefixer!less?sourceMap', publicPath: "../"})
            },
            //Images
            {
                test: /\.(png|jpg|jpeg|gif|svg|woff|woff2|ttf|eot)$/,
                loader: 'file'
            } …
Run Code Online (Sandbox Code Playgroud)

javascript ejs ecmascript-6 webpack

6
推荐指数
2
解决办法
1663
查看次数

在EJS中使用console.log

是否可以在节点/ ejs模板中使用console.log?当我尝试时,它似乎什么也没做,甚至是简单的事情:

<% console.log('test') %>
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

<%= console.log('test') %>
Run Code Online (Sandbox Code Playgroud)

控制台中什么都没有显示。

console ejs node.js

6
推荐指数
2
解决办法
7598
查看次数

使用 Multer 上传文件时显示进度

我遇到了一些麻烦,我目前正在尝试自学一些 NodeJS,但我陷入了困境。我正在尝试使用 Multer 上传文件,我已经完全正常工作,但我想在同一页面上显示上传文件的进度。因此,我使用进度流来显示它,我可以在控制台中完全打印它,但现在的问题是在上传文件的页面上显示它。

所以最后一个问题是:如何使用从变量“p”获得的输出来显示 upload.ejs 中的进度?

这是我目前的代码

用户.js

router.get('/upload', ensureAuthenticated, function(req, res){
    res.render('authed/upload');
});


router.post('/upload-files', function(req, res){
    var p = progress();
    req.pipe(p);
    p.headers = req.headers;

    var sendStream = multer({ storage: storage }).any();

    p.on('progress', function(progress){
        console.log(progress);
    })
    console.log(req.files);

    sendStream(p, res, function(){
        console.log('file has been uploaded');
    });


    req.flash('success', 'File(s) have been uploaded!');

    res.location('/upload');
    res.redirect('/upload');

})
Run Code Online (Sandbox Code Playgroud)

上传.ejs

<% include ../partials/header %>
<% include ../partials/navbar %>

<div class="container">
    <div class="row">
        <div class="col-sm-12 file-upload-wrapper">
        <%- messages() %>
        <div class="w-100 text-center" style="padding-bottom: 2rem;">
            <h2 id="fileupload-text">File …
Run Code Online (Sandbox Code Playgroud)

ejs node.js express multer

6
推荐指数
0
解决办法
1676
查看次数

如何使用 webpack 处理 ejs 视图

我正在尝试使用 Node js 在我的网站上配置 webpack,我还使用 ejs 作为视图。我尝试了很多方法来处理我的 webpack 中的 ejs,但到目前为止我还没有成功。

const path = require('path')
const nodeExternals = require('webpack-node-externals')

module.exports = (env, argv) => {
  return ({
    entry: {
      server: './src/app.js',
    },
    output: {
      path: path.join(__dirname, 'dist'),
      publicPath: '/',
      filename: 'main.js'
    },
    mode: argv.mode,
    target: 'node',
    node: {
      // Need this when working with express, otherwise the build fails
      __dirname: true,
      __filename: true,
    },
    externals: [nodeExternals()], // Need this to avoid error when working with Express
    module: {
      rules: [
        { …
Run Code Online (Sandbox Code Playgroud)

ejs node.js webpack

6
推荐指数
2
解决办法
2万
查看次数