J'ai cette Couchdb vue qui ne fait pas ce que je m'attends. Il n'ajoute pas code
, balance
et session
-params
:Combinaison d'objets JavaScript dans Couchdb
function(doc) {
var params = doc.initial_url_params; //This is an object with many properties
params["code"] = doc.code;
params["balance"] = doc.balance;
params["session"] = doc.session.session_id;
emit(doc.code, params);
}
D'autre part, cette autre mise en œuvre fait l'affaire:
function(doc) {
var params = {};
params["code"] = doc.code;
params["balance"] = doc.balance;
params["session"] = doc.session.session_id;
for (prop in doc.initial_url_params) {
params[prop] = doc.initial_url_params[prop];
}
emit(doc.code, params);
}
Quelqu'un peut-il me dire pourquoi ces deux implémentations ne sont pas équivalent? Est-ce que je fais quelque chose de stupide avec Javascript ou est-ce une limitation spécifique de l'implémentation Javascript de Couchdb?
Par souci de clarté. Voici un exemple JSON doc:
{
"_id": "207112eaaad136dca7b0b7b1c6356dc4",
"_rev": "3-e02de1f2f269642df98ab19ee023569b",
"session_loaded": true,
"balance": 20.48,
"code": "05428",
"initial_url_params": {
"page_id": "212"
},
"session": {
"session_id": "207112eaaad136dca7b0b7b1c6356dc4",
"init": true
}
}
Pour des raisons de clarté, pouvez-vous donner un exemple des données d'objet doc.initial_url_params? – Kristian
S'il vous plaît voir mon édition – joscas
Peut-être 'initial_url_params' est [gelé] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/freeze)/[sealed] (https: // developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/seal)? –