LiteDb Post BSON для веб-API - PullRequest
       13

LiteDb Post BSON для веб-API

0 голосов
/ 08 января 2019

У меня есть несколько отчетов по документам NoSQL, которые необходимо регулярно импортировать на сервер. Идея состоит в том, чтобы использовать LiteDB и читать их как Type, а затем преобразовать в BSON для отправки HTTP POST для импорта в NoSQL DB на сервере. Мне удалось сделать это успешно, но, к сожалению, веб-API готов BsonValue как ноль

void Main()
{
    using (var db = new LiteDatabase(@"MyData.db"))
    {
        var table = db.GetCollection<Customer>("customers");
        var customer = new Customer
        {
            Name = "John Doe",
            Phones = new string[] { "8000-0000", "9000-0000" },
            Age = 39,
            IsActive = true
        };
        table.Insert(customer);
        var document = table.FindAll<TypeA>();

        // Convert to BSON to POST because I have many  and wanted to make a single method to post all types
        // by converting the type Type into BSON
        var bson = documents.Select(s => BsonMapper.Global.ToDocument(s)).ToList();

        // POST TO API
        using (HttpClient client = new HttpClient())
        {
            // Set the Accept header for BSON.
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/bson"));

            // Send POST request.
            MediaTypeFormatter bsonFormatter = new BsonMediaTypeFormatter();
            var result = await client.PostAsync(url, bson, bsonFormatter);
            // Print Result
        }
    }
}

public class TypeA
{
    public string Name { get; set; }
    public DateTime CreateDate { get; set; }
    public bool IsActive { get; set; }
}

public class TypeB
{
    public string Name { get; set; }
    public DateTime CreateDate { get; set; }
    public bool IsActive { get; set; }
}

Это то, что веб-API получает вместо значения BSON

[{\"Name\":{\"Type\":1,\"RawValue\":null,\"AsArray\":null,\"AsDocument\":null,\"AsBinary\":null,\"AsBoolean\":false,\"AsString\":null,\"AsInt32\":0,\"AsInt64\":0,\"AsDouble\":0.0,\"AsDecimal\":0.0,\"AsDateTime\":\"0001-01-01T00:00:00\",\"AsObjectId\":null,\"AsGuid\":\"00000000-0000-0000-0000-000000000000\",\"IsNull\":true,\"IsArray\":false,\"IsDocument\":false,\"IsInt32\":false,\"IsInt64\":false,\"IsDouble\":false,\"IsDecimal\":false,\"IsNumber\":false,\"IsBinary\":false,\"IsBoolean\":false,\"IsString\":false,\"IsObjectId\":false,\"IsGuid\":false,\"IsDateTime\":false,\"IsMinValue\":false,\"IsMaxValue\":false}
...