一个记录是您从.find()
或.findOne()
获取的结果。每个记录都是一个唯一可识别的对象,与物理数据库条目一一对应;例如,Oracle/MSSQL/PostgreSQL/MySQL中的行,MongoDB中的文档或Redis中的哈希。
var records = await Order.find();
console.log('Found %d records', records.length);
if (records.length > 0) {
console.log('Found at least one record, and its `id` is:',records[0].id);
}
在 Sails 中,记录只是字典(纯 JavaScript 对象),这意味着它们可以轻松地表示为 JSON。但是,您还可以使用customToJSON
模型设置来自定义特定模型记录的字符串化方式。
除了基本属性数据(如电子邮件地址、电话号码和出生日期外),Waterline 可以使用关联动态存储和检索链接的记录集。当在查询上调用.populate()
时,每个结果记录将包含一个或多个填充值。这些填充值中的每一个都是查询时链接到该特定关联的记录(或记录数组)的快照。
填充值的类型取决于它是哪种关联
null
,或纯 JavaScript 对象(如果它对应于“模型”关联)例如,假设我们正在处理可爱狼崽的订单
var orders = await Order.find()
.populate('buyers') // a "collection" association
.populate('seller'); // a "model" association
// this array is a snapshot of the Customers who are associated with the first Order as "buyers"
console.log(orders[0].buyers);
// => [ {id: 1, name: 'Robb Stark'}, {id: 6, name: 'Arya Stark'} ]
// this object is a snapshot of the Company that is associated with the first Order as the "seller"
console.log(orders[0].seller);
// => { id: 42941, corporateName: 'WolvesRUs Inc.' }
// this array is empty because the second Order doesn't have any "buyers"
console.log(orders[1].buyers);
// => []
// this is `null` because there is no "seller" associated with the second Order
console.log(orders[1].seller);
// => null
下表显示了在不同情况下,从.find()
或.findOne()
调用返回的记录中可以预期哪些值。
未添加关联的.populate() |
添加了.populate() ,但未找到关联的记录 |
添加了.populate() ,并找到关联的记录 |
|
---|---|---|---|
单数关联(例如seller ) |
数据库记录中此属性的任何内容(通常为null 或外键值) |
null |
表示子记录的 POJO |
复数关联(例如buyers ) |
undefined (该键将不存在) |
[] (空数组) |
表示子记录的 POJO 数组 |
要修改特定记录或记录集的填充值,请调用.addToCollection()、.removeFromCollection()或.replaceCollection()模型方法。