在 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,您应该存储整个模式以便轻松获得名称,
希望对您有所帮助。
我需要在 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,您应该存储整个模式以便轻松获得名称,
希望对您有所帮助。