首页 > 解决方案 > 在 Listview Flutter 中填充链接引用

问题描述

我需要在ListView中填充引用的数据库。在这种情况下,我需要显示用户的指定名称,这是用户模型中的参考。如何在 Flutter 中调用它以显示 Designation 名称?

在此处输入图像描述

我的用户架构是

var UserSchema = new Schema({
'username' : String,
'role_id' : Number,
'designation_id' : {
    type: Schema.Types.ObjectId,
    ref: 'Designation'
},
'login_id' : String,
'password' : String,
'status' : String,
'company_id' : {
    type: Schema.Types.ObjectId,
    ref: 'Company'
},
'enable_login' : Number,
'creation_user_id' : {
    type: Schema.Types.ObjectId,
    ref: 'User'
}, 'update_user_id' : {
    type: Schema.Types.ObjectId,
    ref: 'User'
},
'creation_dt' : Date,
'update_dt' : Date});

module.exports = mongoose.model('User', UserSchema);

我的目的地模型是:

var DesignationSchema = new Schema({
'name' : String,
'designation_id' : Number,
'company_id' : {
    type: Schema.Types.ObjectId,
    ref: 'Company'
},
'creation_user_id' : {
    type: Schema.Types.ObjectId,
    ref: 'User'
},
'update_user_id' : {
    type: Schema.Types.ObjectId,
    ref: 'User'
},
'creation_dt' : Date,
'update_dt' : Date
});

module.exports = mongoose.model('Designation', DesignationSchema);

用户控制器列表是:

list: function (req, res) {
    UserModel.find(function (err, Users) {
        if (err) {
            return res.status(500).json({
                message: 'Error when getting User.',
                error: err
            });
        }
        return res.json(Users);
    });
},

在 Flutter 中,我创建了一个服务来获取所有用户

static Future<Users> getAllUsers() async{
try{
  final response = await http.get(BASE_URL + USERS);

  if(response.statusCode == 200){
    return parseUsers(response.body);
  }else{
    return Users();
  }

}catch(e){
  print('Error ${e.toString()}');
  return Users();
}
}


static Users parseUsers (String responseBody){
final parsed = json.decode(responseBody).cast<Map<String, dynamic>>();

List<User> users = parsed.map<User>((json) => User.fromJson(json)).toList();

Users _users = Users();
_users.users = users;

return _users;
}

在 Flutter 中通过

Text(users.users[index].username,style: TextStyle(color: Colors.black87, fontWeight: FontWeight.bold, fontFamily: 'Roboto',),)

Text("Email: ${users.users[index].login_id}", style: TextStyle(color: Colors.black87, fontSize: 12,fontFamily: 'Roboto',))

Text("Designation: Estimate Engineer", style: TextStyle(color: Colors.black87,fontSize: 12,fontFamily: 'Roboto',)),

谢谢您的支持。

标签: node.jsmongodbflutterdartflutter-dependencies

解决方案


我想您需要更改响应并在架构概念中实现架构

这是在堆栈溢出
链接上讨论模式内部模式的链接: 模式中的猫鼬模式

您的回复应如下所示。

{
    "_id": "5dee58cba34fa96a09d1f049",
    "username": "Moin",
    "role_id": 1,
    "designation_id": {
        "_id": "5dee57d4a34fa96a09d1f047",
        "name": "Administrator",
        "designation_id": 1,
        "company_id": "5dee54681fc99665221ec960",
        "creation_user_id": "5dee2a859eae3e0a98109d81",
        "update_user_id": "5dee2a859eae3e0a98109d81",
        "creation_dt": null,
        "update_dt": null,
        "__v": 0
        },
    "login_id": "moin@email.com",
    "password": "moin123",
    "status": "1",
    "company_id": "5dee54681fc99665221ec960",
    "enable_login": 1,
    "creation_user_id": "5dee2a859eae3e0a98109d81",
    "update_user_id": "5dee2a859eae3e0a98109d81",
    "creation_dt": null,
    "update_dt": null,
    "__v": 0
    },

如果要存储 ID,您应该存储整个架构以轻松获取名称,

希望这可以帮助。


推荐阅读