小编sun*_*ung的帖子

将pymongo游标转换为json

  • 我知道这是一个相当普遍的问题.我正在写一个小的Flask应用程序,我正在尝试将一些查询反馈给视图.我连接到我的本地MongoDB设置,并成功查询 - 但我不能用它生成一个json对象.

我见过的最常见的解决方案是从pymongo ie导入json_util

import json
from pymongo import json_util

results = connection.get_collection('papayas_papaya')
results = results.find({
    'identifier': '1',
})
serialized_results = [json.dumps(result, default=json_util.default, separators=(',', ':')) for result in results]
Run Code Online (Sandbox Code Playgroud)

我使用pip将pymongo安装到我的Flask virtualenv中,即:

pip install pymongo
Run Code Online (Sandbox Code Playgroud)

运行上面的代码时,我不断收到以下错误:

ImportError: cannot import name json_util
Run Code Online (Sandbox Code Playgroud)

我可以在pymongo-2.3-py2.6.egg-info/installed-files.txt ../bson/json_util.py中看到这一行

任何人都有任何提示可以帮我弄清楚我做错了什么?

更新:进一步了解这一点 - 我已经设法让这个工作:

import pymongo
from bson.json_util import dumps

connection = pymongo.Connection("localhost", 27017)
db = connection.mydocs

def get():
    cursor = db.foo.find({"name" : "bar"})
    return dumps(cursor)
Run Code Online (Sandbox Code Playgroud)

我遇到的一个问题是试图独立安装bson - pymongo带来bson并分别导入bson导致问题.

感谢@Cagex指出我正确的方向

pymongo

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

防止重叠HTML元素触发事件

所以,我有两个元素,一个嵌套在另一个元素中

<div id="outer">
    <div id="inner">
         <p>Lorem Ipsum</p>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

外部容器大于内部,实现模态覆盖布局.我想在外部的暴露表面上注册一个单击事件,这将导致两者都被解除,但是如果你点击内部div,我不希望发生这种情况.

我正在使用jQuery委托/ stopPropagation,并试图询问该元素以确保它是外部div,但无济于事 - 它仍然收到外部事件.我正在考虑在内部div之外的撞击区域进行手摇动,但我想知道是否有更优雅的替代方案.

编辑:

这里发布了几个好的解决方案 - 非常感谢您的反馈

jquery events delegates

11
推荐指数
2
解决办法
5205
查看次数

在Front Controller插件中重定向Zend

我正在尝试将我的重定向(基于身份验证和其他各种状态)集中到前端控制器插件中.到目前为止,我已经尝试过:

    $this->setRequest(new Zend_Controller_Request_Http('my_url'));
Run Code Online (Sandbox Code Playgroud)

在插件的各个点(即从routeStartup到dispatchLoopShutdown)还有:

    $this->setResponse(new Zend_Controller_Response_Http('my_url'));
Run Code Online (Sandbox Code Playgroud)

任何人都可以提供一些帮助,或指向我的教程方向?

plugins redirect zend-framework response request

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

Crockford Prototypical Inheritance的一个小缺点

只是在JS中尝试不同的继承技术,并且遇到了一些关于Crockford的Prototypal Inheritance模式的轻微不满:

function object(o) {
    function F() {}
    F.prototype = o;
    return new F();
}

var C,
    P = {
         foo:'bar',
         baz: function(){ alert("bang"); }
         }

C = object(P);
Run Code Online (Sandbox Code Playgroud)

这一切都很好 - 除非你登录到控制台 - 对象显示为F.我已经看到了可以重新指定构造函数的经典仿真 - 是否有类似的方法来强制对象(控制台)引用?

javascript prototypal-inheritance

8
推荐指数
1
解决办法
456
查看次数

URL控制器映射策略(PHP)

这是一个学术问题,所以请立即退出.我已经通过Stack挖掘了与MVC框架中的URL/Controller映射相关的线程 - 特别是这一个:

PHP应用程序URL路由

到目前为止,我可以确定两种做法:

1:通过解析URL字符串进行动态映射(在'/'上展开)

2:模式匹配匹配url到包含可用路由的配置文件

我想从人们那里获得一些关于如何最好地完成这项任务的意见的反馈(或链接到其他一些主题/文章).

php url-routing

7
推荐指数
1
解决办法
4542
查看次数

使用PHP(DOM)迭代未知的XML结构

我想编写一个函数,将(理论上)未知的XML数据结构解析为等效的PHP数组.

这是我的示例XML:

<?xml version="1.0" encoding="UTF-8"?>
<content>

<title>Sample Text</title>

<introduction>
    <paragraph>This is some rudimentary text</paragraph>
</introduction>
<description>
    <paragraph>Here is some more text</paragraph>
    <paragraph>Even MORE text</paragraph>
    <sub_section>
        <sub_para>This is a smaller, sub paragraph</sub_para>
        <sub_para>This is another smaller, sub paragraph</sub_para>
    </sub_section>
</description>
</content>
Run Code Online (Sandbox Code Playgroud)

我从devarticles修改了这个DOM迭代函数:

$data = 'path/to/xmldoc.xml';
$xmlDoc = new DOMDocument(); #create a DOM element
$xmlDoc->load( $data ); #load data into the element
$xmlRoot = $xmlDoc->firstChild; #establish root

function xml2array($node)
    {
    if ($node->hasChildNodes())
    {
$subNodes = $node->childNodes;
    foreach ($subNodes as $subNode)
        {
        #filter …
Run Code Online (Sandbox Code Playgroud)

php xml arrays parsing loops

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

PHP安全性:在常量或私有属性中存储连接细节?

我想知道将连接变量存储为常量(因为它们无法更改)或私有属性(因为它们无法查看)是否更好.我向所有那些因我缺乏安全感而恐惧的人道歉...

php security private constants

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

在Web注册上验证用户电子邮件的重要性

我知道这个问题很疯狂 - 但我的雇主客户要求从注册过程中删除电子邮件验证(他们觉得这会妨碍注册).我想从整个编程社区获得有关注册和电子邮件验证的经验和意见以及取消此安全措施可能带来的后果的反馈.

security email verification registration

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

在PHP中访问单例方法

我刚刚开始我的OOP之旅 - 我现在正在尝试推出自己的MVC - 纯粹是出于学习目的.我正在编写Apress PHP-Objects模式实践手册中的教程.我使用private __construct/__ clone技术创建了一个注册表单例对象:

class Registry
{
  private static $instance;
  private $values = array();


  private function __construct(){}
  private function __clone(){}

  public static function getInstance(){
       if( !isset( self::$instance ) ){
         self::$instance = new Registry();
         }
       return self::$instance;
       }

  public function get( $key ) {
      if ( isset( $this->values[$key] ) ) {
          return $this->values[$key];
          }
      return null;
      }

  public function set( $key, $val ) {
      $this->values[$key] = $val;
      }
  }
Run Code Online (Sandbox Code Playgroud)

我直接获得了这个对象的实例,即:

Registry::getInstance();
Run Code Online (Sandbox Code Playgroud)

但是,(遵循教程中的语法) - 如果我尝试使用' - >'方法访问公共方法 - …

php oop methods singleton static

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

PHP OOP:每个参数类型的唯一方法?

我正在写一个小自制ORM(学术兴趣).我正在努力坚持TDD概念作为培训练习,作为练习的一部分,我正在编写API的文档,因为我开发了类.

举个例子 - 我正在研究经典的"getCollection"类型映射器类.我希望它能够为特定用户检索资产X的集合(比如博客文章),以及基于任意数值的数组的集合.所以 - 你可能有一个类似于其中任何一个的方法

$User = $UserMapper->load(1);
$ArticleCollection = $ArticleMapper->getCollection(range(10,20));
$ArticleCollection = $ArticleMapper->getCollection($User);
$ArticleCollection = $ArticleMapper->getCollection($User->getId());
Run Code Online (Sandbox Code Playgroud)

因此,在编写getCollection方法的文档时 - 我想在Docblock中声明@param变量.为每个参数类型设置一个唯一的方法是否更好,或者是否可以根据参数类型委托给正确的内部方法/类?

php oop documentation orm

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