小编len*_*klb的帖子

在pymongo中正确使用$ ne或$ not(不支持的投影选项)

我想编写以下查询到Mongo:"获取字段等于var1但/ /而不是var2的所有行"所以我有这个:

db["mydb"].find(
    {"field": var1},
    {"field": {
        "$ne": var2}
    }
)
Run Code Online (Sandbox Code Playgroud)

但它产生的错误是$ ne是一个"不支持的投影选项"我一直在谷歌搜索但我找不到类似的东西(或者这些例子似乎与我的努力没有矛盾)

python mongodb pymongo

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

Python中使用stdin的多个参数

我有一个问题,涉及从Unix终端运行Python脚本时传递多个stdin参数.请考虑以下命令:

$ cat file.txt | python3.1 pythonfile.py
Run Code Online (Sandbox Code Playgroud)

然后,file.txt (通过"cat"命令访问)的内容将作为标准输入传递给python脚本.这很好(虽然更优雅的方式会很好).但是现在我必须传递另一个参数,这个参数只是一个将用作查询的单词(以及后来的两个单词).但我无法找到如何正确地做到这一点,因为猫管会产生错误.并且您不能input()在Python中使用该标准,因为它将导致EOF错误(您无法组合stdin和input()Python).

python stdin pipe variadic-functions eof

7
推荐指数
2
解决办法
5041
查看次数

使用jQuery和AJAX时,我应该抓住按钮点击或表单提交吗?

假设这个简单的HTML表单:

        <form id="settings-form">
            <label>
            Input data:
            <input name="data"/>
            </label>
            <button id="submit-btn">Submit</button>
        </form>
Run Code Online (Sandbox Code Playgroud)

我想使用jQuery和AJAX提交此表单,因此页面不会刷新.您至少可以通过以下两种方式执行此操作:

1.将事件处理程序附加到表单的实际提交:

    $("#settings-form").submit(function(event){
        event.preventDefault();
        var data = $(this).serialize();
        //Ajax code here
    });
Run Code Online (Sandbox Code Playgroud)

在这里,我添加type='submit'按钮submit-btn.

2. 将事件处理程序附加到按钮:

    $("#submit-btn").click(function(){
        var data = $("#settings-form").serialize(); // or this.closest("form").serialize()
        //Ajax code here
    });
Run Code Online (Sandbox Code Playgroud)

在这里,submit-btn得到type='button'

我的问题是:哪个选项更好,为什么?这不是关于在这种情况下哪个type属性值更好button,而是为什么事件处理程序1优于2,反之亦然.

forms ajax jquery

5
推荐指数
1
解决办法
1395
查看次数

如何在Jest中测试Express中的响应数据

我正在使用Jest在Node/Express中编写单独的中间件函数的单元测试.

中间件的一个简单示例:

function sendSomeStuff(req, res, next) {
    try {
        const data = {'some-prop':'some-value'};

        res.json(data);
        next();
    } catch (err) {
        next(err);
    }
}
Run Code Online (Sandbox Code Playgroud)

以及我的测试套件示例:

const httpMocks = require('node-mocks-http');
const { sendSomeStuff } = require('/some/path/to/middleware');

describe('sendSomeStuff', () => {
    test('should send some stuff', () => {
        const request = httpMocks.createRequest({
            method: 'GET',
            url: '/some/url'
        });

        let response = httpMocks.createResponse();

        sendSomeStuff(request, response, (err) => {
            expect(err).toBeFalsy();

            // How to 'capture' what is sent as JSON in the function?
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

我必须提供一个回调来填充next …

unit-testing middleware node.js express jestjs

5
推荐指数
1
解决办法
4842
查看次数

如何将元素推送到MongoDB中的现有数组?

我生成trigram片段作为主键.该字段words是由trigram键表示的术语数组,例如:

{
    "trigram": "#ha",
    "words": ["hahaha", "harley", "mahalo"]
}
Run Code Online (Sandbox Code Playgroud)

问题是将新术语推向阵列.我不知道该怎么用$addToSet.

db["Terms"].update({
  "trigram": trigram,
  {"$addToSet": {"words":word}
})
Run Code Online (Sandbox Code Playgroud)

它应该附加word到该words领域.但是数据库保持为空而不返回任何错误消息.

我该怎么办?

python database mongodb pymongo

2
推荐指数
1
解决办法
4212
查看次数

pug.compile() 找不到模板文件(res.render() 可以)

我正在编写一个小型 NodeJS/Express 应用程序。我将哈巴狗设置为其模板引擎:

const app = express();

app.set('view engine', 'pug');
app.set('views', __dirname + "/public/views");
app.use(express.static(__dirname + '/public/static'));
Run Code Online (Sandbox Code Playgroud)

res.render()当调用 a发送 HTML 响应时,这可以正常工作:

app.get('/', function getIndex(req, res){
    res.render('index.pug');
});
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试渲染小组件并将它们收集在字符串或数组中作为对 AJAX 调用的响应时,我无法让它工作。

const pug = require('pug');
const compile = pug.compileFile('option.pug');
Run Code Online (Sandbox Code Playgroud)

这总是会导致Error: ENOENT: no such file or directory, open 'option.pug'. 我尝试更改路由器视角的路径(类似于../../public/views/option.pug),但这也没有帮助。

我不知道为什么路径的解释不同。

使用时如何引用该模板pug.compileFile

node.js express pug

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