Menu Docs
Página inicial do Docs
/ / /
Controlador Node.js
/ /

Valores indefinidos

Nesta página

  • Visão geral
  • Ignorar valores indefinidos
  • Defina o escopo para a serialização de valores indefinidos

Neste guia, você aprende a controlar como o driver serializa os valores do undefined. Por padrão, o driver serializa valores undefined como valores null durante operações de gravação.

Para fazer o driver ignorar campos com valores undefined durante a serialização, defina a configuração ignoreUndefined como true. Ao especificar essa configuração, o driver não serializa campos com valores undefined .

O exemplo a seguir insere dois documentos. A primeira operação de inserção tem a configuração de ignoreUndefined definida como true, portanto, o driver não serializa o campo salesTax nesta operação. A segunda operação insere um documento com o campo salesTax e com um valor null:

await myColl.insertOne(
{
state: "Montana",
salesTax: undefined,
},
{ ignoreUndefined: true }
);
await myColl.insertOne({
state: "New Hampshire",
salesTax: undefined,
});

Os documentos aparecem na coleção da seguinte maneira:

{
_id: ...,
state: "Montana",
},
{
_id: ...,
state: "New Hampshire",
salesTax: null
}

Você pode especificar a configuração ignoreUndefined nos seguintes níveis:

  • O nível do cliente

  • O nível de banco de dados

  • O nível da collection

  • O nível de operação

A configuração ignoreUndefined se aplica automaticamente ao escopo da instância do objeto na qual você a especificou e a quaisquer outros objetos criados a partir dessa instância.

Por exemplo, se você definir a configuração ignoreUndefined ao instanciar um objeto do banco de dados, qualquer instância de coleção criada a partir desse objeto herdará a configuração. Além disso, quaisquer operações que você chamar sobre essa instância da coleção também herdam a configuração.

O exemplo abaixo executa uma operação de localização e atualização que herda a configuração ignoreUndefined do objeto de banco de dados myDB. Esta operação não produz alterações de dados porque o driver ignora o campo gasTax:

const myDB = client.db("test", { ignoreUndefined: true });
// The collection inherits the ignoreUndefined setting
const myColl = myDB.collection("states");
// Any write operation will not serialize undefined values
await myColl.findOneAndUpdate(
{ state: "Georgia" },
{ $set: { gasTax: undefined } }
);

Você pode especificar a configuração ignoreUndefined novamente em qualquer nível para substituir quaisquer configurações herdadas.

Por exemplo, se você definir ignoreUndefined como true em seu objeto de collection, você poderá substituir a configuração em operações de gravação individuais executadas nesta collection.

const myColl = myDB.collection("states", { ignoreUndefined: true });
// The insert operation will not serialize undefined values
await myColl.insertOne({
state: "South Dakota",
capitalGainsTax: undefined,
});
// The insert operation will serialize undefined values
await myColl.insertOne(
{ state: "Texas", capitalGainsTax: undefined },
{ ignoreUndefined: false }
);

Voltar

Configurações de JSON