node.js - 在 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',)),
谢谢您的支持。
解决方案
我想您需要更改响应并在架构概念中实现架构
这是在堆栈溢出
链接上讨论模式内部模式的链接: 模式中的猫鼬模式
您的回复应如下所示。
{
"_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,您应该存储整个架构以轻松获取名称,
希望这可以帮助。
推荐阅读
- react-native - 错误:命令失败:gradlew.bat app:installDebug -PreactNativeDevServerPort=8081(如何修复?)
- mysql - 一起编写sql join和单独编写sql join有什么区别?
- flutter - 如何在 Flutter 中集成 Microsoft Graph API 并从 Microsoft Azure Active Directory 中获取用户的对象 ID?
- java - 如何获取街道地址作为标记的标题
- arrays - 基于公共列值将多行组合成单个 JSON 对象
- javascript - 有没有办法保护我的 express.js 应用程序中的 POST 路由?
- flutter - HookWidget 有对应的 GlobalKey 吗?
- javascript - 这里地图版本升级到3.1
- php - Yii2:复选框列表的多选未保存
- debugging - 为什么这个用于 lat/long 的 Lua Haversine 代码不起作用?