在 Listview Flutter 中填充链接引用

Populate linked reference in Listview Flutter

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

My UserSchema is

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);

My Destination Model is:

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);
    });
},

In Flutter I created a Service for getting all Users

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;
}

Showing it in Flutter via

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',)),

感谢您的支持。

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

这里是 link 讨论堆栈溢出时模式内部的模式
link : Mongoose schema within schema

您的回复应如下所示。

{
    "_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,您应该存储整个模式以便轻松获得名称,

希望对您有所帮助。