小编MrJ*_*ger的帖子

在EJS中将变量渲染为HTML

我正在使用Node.js(Forms)的Forms库,它将在后端为我呈现一个表单,如下所示:

var signup_form = forms.create({
    username: fields.string({required: true})
    , password: fields.password({required: true})
    , confirm:  fields.password({
        required: true
        , validators: [validators.matchField('password')]
    })
    , email: fields.email()
});
var signup_form_as_html = signup_form.toHTML();
Run Code Online (Sandbox Code Playgroud)

最后一行var signup_var signup_form_as_html = signup_form.toHTML();创建了一个HTML块,看起来像这样:

<div class="field required"><label for="id_username">Username</label><input type="text" name="username" id="id_username" /></div><div class="field required"><label for="id_password">Password</label><input type="password" name="password" id="id_password" /></div><div class="field required"><label for="id_confirm">Confirm</label><input type="password" name="confirm" id="id_confirm" /></div><div class="field"><label for="id_email">Email</label><input type="text" name="email" id="id_email" /></div>
Run Code Online (Sandbox Code Playgroud)

基本上只是一长串HTML.然后我尝试使用以下代码使用EJS和Express渲染它:

res.render('signup.ejs', {
    session: loginStatus(req)
    , form: signup_form_as_html
});
Run Code Online (Sandbox Code Playgroud)

但是在渲染HTML时,我只是上面发布的字符串,而不是实际的HTML(因此是我想要的表单).有没有办法使用EJS将该字符串渲染为实际的HTML?或者我必须使用像Jade这样的东西吗?

ejs node.js express

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

MongoDB计数集合Node.js

我试图通过Node.js与MongoDB接口,并且在count()方法上遇到了一些麻烦.我正在使用node-mongodb-native,它看起来像我正在做的应该工作.我的代码示例:

var get_total_num_docs = function(db_client, query, cb){
  db_client.collection(query['collection'], function(e, coll) {
    coll.find(query.params, query.options, function (e, cursor) {
      cursor.count(function (e, count) {
        console.log(count);
        return cb(e, count);
      });
    });
  });
};
Run Code Online (Sandbox Code Playgroud)

我确信一切都存在(aka coll和cursor都定义了),但它只有在我的query.params字段为空(即查找整个集合的计数)时才有效.因此,如果我尝试使用任何类型的选择器运行查找,查找工作,但它拒绝指望返回的光标.从我在网上看到的,这看起来是正确的方法,但显然有些不对劲.感谢您的帮助!

mongodb node.js

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

延迟的工作不起作用

我正在构建一个应用程序,该应用程序有时需要将fb中的一堆数据与我的数据库同步,所以我(尝试)使用“延迟作业”将其推送到后台。这是我的“延迟工作”类的一部分。

class FbSyncJob < Struct.new(:user_id)
  require 'RsvpHelper'

  def perform
    user = User.find(user_id)
    FbSyncJob.sync_user(user)
  end

  def FbSyncJob.sync_user(user)
    friends = HTTParty.get(
      "https://graph.facebook.com/me/friends?access_token=#{user.fb['token']}"
    )
    friends_list = friends["data"].map { |friend| friend["id"] }
    user.fb["friends"] = friends_list
    user.fb["sync"]["friends"] = Time.now
    user.save!
    FbSyncJob.friend_crawl(user)
  end
end
Run Code Online (Sandbox Code Playgroud)

RsvpHelper班级一起生活lib/RsvpHelper.rb。因此,在我的应用程序中的某个时候,我会Delayed::Job.enqueue(FbSyncJob.new(user.id))与一个已知的有效用户进行呼叫。我建立的工作人员甚至告诉我工作已成功完成:

1 jobs processed at 37.1777 j/s, 0 failed

但是,当我在数据库中检查用户时,他的朋友列表尚未更新。我做错了什么还是什么?非常感谢您的帮助,这使我发疯。

ruby-on-rails delayed-job mongoid

3
推荐指数
1
解决办法
4576
查看次数

标签 统计

node.js ×2

delayed-job ×1

ejs ×1

express ×1

mongodb ×1

mongoid ×1

ruby-on-rails ×1