Node.js 在Jade视图中提取段落标记之间的文本

Node.js 在Jade视图中提取段落标记之间的文本,node.js,pug,express,Node.js,Pug,Express,我试图在Jade视图中提取段落标记之间的文本,但它不起作用 我的主题: <p> My content. </p> <img src="https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcTJ9ylGJ4SDyl49VGh9Q9an2vruuMip-VIIEG38DgGM3GvxEi_H"> <p> Second sentence. </p> 我的内容 第二句话 玉景: - va

我试图在Jade视图中提取段落标记之间的文本,但它不起作用

我的主题:

<p> My content. </p> <img src="https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcTJ9ylGJ4SDyl49VGh9Q9an2vruuMip-VIIEG38DgGM3GvxEi_H"> <p> Second sentence. </p>
我的内容

第二句话

玉景:

- var content = post.content.slice('/<p>(.*?)<\/p>/g');
p #{content}
-var content=post.content.slice('/(.*)/g');
p#{content}
结果:

<
<

为什么需要在服务器端的段落标记之间提取文本

这将是我们在客户端js上所做的事情


在您的例子中,
context
应该是通过
res.render('view',{context:'My content.})
res.locals

因此,您可以在Jade视图中处理您的
#{context}

如果要在Jade视图中声明变量
上下文

应该是

-var context=“我的内容。”

p#{content}


回复
jsdom
code 在代码中

posts[i]
未定义

我想你想迭代帖子,所以你应该在这里使用
迭代器

您可以在此处使用
async
模块

在这种情况下,
map
非常合适

有关文档->

仅供参考,您应该使用控制流库来管理回调代码

否则,就很难维持


我推荐
async

我想是regexp,试试这个:(.*)

为什么要发布两次相同的wuestion???不,同样的事情。。。因为我在之前的帖子上犯了个错误。。。Jade和NodeJS不仅仅是Javascript。好吧,在你的另一篇文章中,@爆炸药丸是正确的。regexp是/(.*)/g。您只需要删除引号。另外,您还需要其他post.post.content.split(/(.*)/g)中提供的函数//提取所有句子,它不起作用。我需要在段落标记之间获取文本,因为我的帖子有两个视图,“posts”视图包含所有帖子,而“post”视图包含特定帖子。在“posts”视图中,我想从内容中获得一个简短的描述,在“post”视图中,我获得带有标记的内容……您不必使用extract。在包含所有帖子的“posts”视图中,在您从DB查询帖子之后,您可以使用substr like
string.substr(0,10)
获取简短描述并作为参数发送到jade视图。在“post”视图中,您只需从DB查询特定的post,就可以了。为什么要使用exact?是的,我也使用substr()函数,但如果我不删除标记,它看起来像是“我的senten初学者…”!你从DB查询你的帖子?你为什么在里面有标签?好的,我明白了。。。您应该使用dom解析器模块,而不是自己提取。这将更容易和更灵活!试试这个->
var i = 0;
Creation.findAll({where: "state = 1",order: 'id DESC', limit: 2}).success( function(creations) {
    Post.findAll({where: "state = 1",order: 'id DESC', limit: 2}).success(function(posts){
        console.log(posts[i].content);
        jsdom.env(
            posts[i].content,
            ["http://code.jquery.com/jquery.js"],
            function(errors, window) {
                posts[i].content = window.$("p").text();
            }
        );
        i++;
        res.render('index', {
            creations: creations,
            posts: posts,
            title: "Anthony Cluse | Portfolio"
        });
    });
});
var i = 0;
Creation.findAll({where: "state = 1",order: 'id DESC', limit: 2}).success( function(creations) {
    Post.findAll({where: "state = 1",order: 'id DESC', limit: 2}).success(function(posts){
        console.log(posts[i].content);
        jsdom.env(
            posts[i].content,
            ["http://code.jquery.com/jquery.js"],
            function(errors, window) {
                posts[i].content = window.$("p").text();
            }
        );
        i++;
        res.render('index', {
            creations: creations,
            posts: posts,
            title: "Anthony Cluse | Portfolio"
        });
    });
});