2016-04-21 2 views
2

Перед лицом проблемы с клоном объекта mongoose query. Javascript копия один объект в другой объект по call-by-ref, но в моем проекте есть сценарий, мне нужно скопировать один объект в другой объект с помощью call-by-value.как клонировать объект запроса мангуста в javascript

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

var query1=query; 

Я изменение сценария в объекте запроса не отражается в query1. Я google и пытаюсь сделать так много, чтобы клонировать объект, но он не работает. Объект запроса используется в другой функции для разбивки на страницы, а для запроса count используется объект query1.

1.I используется для Object.clone (Query1) ошибка Object.clone не функционирует 2.I используется Object.assign (Query1), но does't работает отлично. 3.Я использовал другие так много способов, кто может помочь мне разобраться с этой проблемой

+0

Если вы можете, у может использовать lodash методы _.clone: ​​https://lodash.com/docs#clo ne или https://lodash.com/docs#cloneDeep – mimiz

+0

вы сказали, что Object.assign (query1) ....... не работает? можете ли вы упомянуть, что с этим случилось? – GvSharma

+0

@gvsharma change query1 отражает в переменной запроса в этом случае. –

ответ

2

вы пытаетесь клонировать курсор, но это не правильный подход, вы, вероятно, просто нужно создать еще один

, как это :

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

var query = buildQuery(); 
var query1 = buildQuery(); 
+0

Спасибо, что это мне поможет .. но если у вас есть другой альтернативный способ, который будет более эффективным. –

1

Альтернативное решение с использованием метода: 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()]) 
Смежные вопросы