如何获取通过 ASP.NET Core 返回的 ObjectId
的字符串表示形式。
我的 Controller 中的操作结果如下:
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
执行此操作?
编辑 添加更多数据
这是用户类别。 ObjectId
是 MongoDB.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; }
}
我的 Controller 中的 get 方法。 Controller
是Microsoft.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();
}
最佳答案
您必须显式地将 ObjectID 写入 JSON 转换器。请检查以下链接: https://stackoverflow.com/a/37966098/887976
关于mongodb - 从 ASP.NET Core 以字符串形式返回 ObjectID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41345401/