Eug*_*kov 2 mongoose mongodb node.js
请考虑以下架构
Var Schema = new Schema({
username: {Type: String},
...
...
contacts: {
email: {Type: String},
skype: {Type: String}
}
})
Run Code Online (Sandbox Code Playgroud)
由于每个用户只能说一个电子邮件和Skype,我不想使用带有联系人的数组.
丢弃数据库查询和错误处理我尝试做类似的事情
// var user is the user document found by id
var newValue = 'new@new.new';
user['username'] = newValue;
user['contacts.$.email'] = newValue;
console.log(user['username']); // logs new@new.new
console.log(user['contacts.$.email']); // logs new@new.new
user.save(...);
Run Code Online (Sandbox Code Playgroud)
没有错误发生,用户名成功更新,而联系人子文档仍为空.我在那里想念什么?
$从路径中删除索引,因为contacts它不是数组,并使用该set方法而不是尝试直接操作user使用路径的属性:
var newValue = 'new@new.new';
user.set('contacts.email', newValue);
user.save(...);
Run Code Online (Sandbox Code Playgroud)
或者您可以email直接修改嵌入字段:
var newValue = 'new@new.new';
user.contacts.email = newValue;
user.save(...);
Run Code Online (Sandbox Code Playgroud)
如果它不仅仅是您问题中的拼写错误,那么您的另一个问题是您需要使用type而不是Type在您的架构定义中.所以它应该是:
var Schema = new Schema({
username: {type: String},
...
...
contacts: {
email: {type: String},
skype: {type: String}
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4294 次 |
| 最近记录: |