我正在构建Node / MongoDB / Mongoose同步服务器应用程序。
我的架构的精简版本如下所示:
let dayTimeline = new mongoose.Schema({
deviceId: { type: String, trim: true, required: true, index: true }, /* device identifier */
day: { type: Number, required: true, index: true },
started: { type: Number, required: true, default: 0 }, /* started in seconds from 1970 */
ended: { type: Number, required: true, default: 0 }, /* ended in seconds from 1970 */
duration: { type: Number, required: true, default: 0 }, /* duration in seconds from 1970 */
timeline: [{ type: mongoose.Schema.Types.ObjectId, ref: 'TimelineItem' }]
}
其中timeline属性是对以下实例的引用数组:
let timelineItem = new mongoose.Schema({
deviceId: { type: String, trim: true, required: true, index: true }, /* device identifier */
started: { type: Number, required: true, default: 0 }, /* started in seconds from 1970 */
ended: { type: Number, required: true, default: 0 }, /* ended in seconds from 1970 */
duration: { type: Number, required: true, default: 0 } /* duration in seconds from 1970 */
});
客户端应用程序将20个dayTimeline json词典的数组传递给服务器子应用程序,每个应用程序包含一个包含10-20个timelineItem json词典的数组。
我希望从客户端传递的数据覆盖/更新服务器数据。
使用mongoose插入/更新数据的最有效方法是什么?
在客户端应用程序中,我使用Realm,我可以为两个对象指定一个主id键,它是deviceId和启动值的组合,这些值构成唯一标识符 - 我认为我可以做到在服务器上类似的东西,但我对猫鼬的知识非常有限。