当我尝试从用户获取 CustomData 时,MongoDB 领域出现错误

问题描述 投票:0回答:1

当我尝试访问 MongoDB 领域中用户的 CustomData 时,出现此错误:

An error occurred while logging in: Element 'username' does not match any field or property of class Datauser.

我正在使用Realm的Unity和.NET Sdk。

这是Realm提供的SyncModel

using System;
using System.Collections.Generic;
using Realms;
using MongoDB.Bson;
public partial class Datauser : IRealmObject
{
    [MapTo("_id")]
    [PrimaryKey]
    public ObjectId? Id { get; set; }
    [MapTo("avatar")]
    public string? Avatar { get; set; }
    [MapTo("user")]
    public string? User { get; set; }
    [MapTo("username")]
    public string? Username { get; set; }
}

这是我用来检索数据的代码

 await _realmUser.RefreshCustomDataAsync();
  Datauser customData = _realmUser.GetCustomData<Datauser>();
  Debug.Log(customData);

CustomData 已启用,将其连接到数据库的字段是“user”。 另外,使用此代码:


await _realmUser.RefreshCustomDataAsync();
 var customData = _realmUser.GetCustomData();
 Debug.Log(customData);

它有效,我将所有内容都以字符串形式返回。 解决方案?

Table Db

c# mongodb unity-game-engine realm
1个回答
0
投票

问题在于 Realm SDK 使用两种不同的技术将数据映射到 C# 对象。对于数据库/同步用例,它使用 RealmObjects 及其各自的属性(即

MapTo
),但对于 json/bson 数据的反序列化,它使用 MongoDB.Bson 库,该库具有自己的数据映射属性 - 即
BsonElement
。我们意识到这是违反直觉的,并计划在 SDK 的未来版本中解决这个问题,但现在您需要对您的类进行双重注释,或者对从 json 反序列化的 API 使用专用的 bson 注释模型(即任何具有重载返回
BsonDocument
)。更具体地说,要解决您眼前的问题,请将您的模型更改为:

public partial class Datauser : IRealmObject
{
    [MapTo("_id")]
    [PrimaryKey]
    public ObjectId? Id { get; set; }

    [MapTo("avatar")]
    [BsonElement("avatar")]
    public string? Avatar { get; set; }

    [MapTo("user")]
    [BsonElement("user")]
    public string? User { get; set; }

    [MapTo("username")]
    [BsonElement("username")]
    public string? Username { get; set; }
}
© www.soinside.com 2019 - 2024. All rights reserved.