从ASP.NET Core

时间:2016-12-27 12:39:37

标签: mongodb asp.net-core objectid

如何获取通过ASP.NET Core返回的ObjectId的字符串表示形式。

我的控制器中有以下操作结果:

return new ObjectResult(new { session, user });

其中一个用户属性是UserId类型的ObjectId

但是,这会在响应中返回

"id": {
  "timestamp": 1482840000,
  "machine": 6645569,
  "pid": 19448,
  "increment": 5052063,
  "creationTime": "2016-12-27T12:00:00Z"
}

我希望响应只是58625d5201c4f202609fc5f3,它是同一结构的字符串表示。

是否有任何简单的方法可以为所有返回的ObjectIds执行此操作?

修改 添加更多数据

以下是用户类。 ObjectIdMongoDB.Bson.ObjectId

public class User
{
    public ObjectId Id { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
    public string PasswordHash { get; set; }
    public string PasswordSalt { get; set; }
}

我的控制器中的get方法。 ControllerMicrosoft.AspNetCore.Mvc.Controller

[HttpGet("{id}", Name = "GetUser")]
public async Task<IActionResult> Get(ObjectId id)
{
    var user = await _repository.GetOne<User>(id);
    if (user == null) return NotFound();
    return new ObjectResult(user);
}

这是我的存储库中的方法:

public async Task<T> GetOne<T>(ObjectId id)
{
    var collectionname = typeof(T).Name;
    var collection = _database.GetCollection<T>(collectionname);
    var filter = Builders<T>.Filter.Eq("_id", id);
    var result = await collection.Find(filter).ToListAsync();
    return result.FirstOrDefault();
}

1 个答案:

答案 0 :(得分:2)

您必须显式地将ObjectID写入JSON转换器。请检查以下链接: https://stackoverflow.com/a/37966098/887976