如何在javascript中克隆猫鼬查询对象

Him*_*yal 3 javascript node.js

我正面临mongoose query对象克隆的问题。Javascript将一个对象复制到另一个对象,call-by-ref但是在我的项目中,我需要通过以下方式将一个对象复制到另一个对象:call-by-value.

    var query=domain.User.find({
            deleted: false,
            role: role
        })

var query1=query;
Run Code Online (Sandbox Code Playgroud)

我的查询对象中的方案更改未反映在中query1。我用谷歌搜索并尝试了许多克隆对象的方法,但是它不起作用。查询对象在另一个函数中用于分页,而query1对象用于计数查询。

1.我习惯了Object.clone(query1)错误Object.clone不是函数2.我使用了Object.assign(query1)但它不能正常工作。3.我用了很多其他方法可以帮助我解决这个问题

小智 5

您正在尝试克隆游标,但这不是正确的方法,您可能只需要创建另一个游标

像这样:

var buildQuery = function() {
  return domain.User.find({
    deleted: false,
    role: role
  });
};

var query = buildQuery();
var query1 = buildQuery();
Run Code Online (Sandbox Code Playgroud)


Ser*_*kyi 5

使用merge方法的替代解决方案:

const query = domain.User.find({
  deleted: false,
  role: role
}).skip(10).limit(10)

const countQuery = query.model.find().merge(query).skip(0).limit(0)

const [users, count] = await Promise.all([query, countQuery.count()])
Run Code Online (Sandbox Code Playgroud)