Pra*_*ats 24 mongoose mongodb node.js
我有一个像这样的对象
==================records=========={ Id: 5114a3c21203e0d811000088,
userId: 'test',
sUserId: test,
userName: 'test',
url: 'test',
Title: 'test'
}
Run Code Online (Sandbox Code Playgroud)
我需要在上面的记录中添加一个新字段名称:'test',我尝试给出records.Name = name,它不起作用.
请帮助
谢谢,普拉茨
dro*_*der 47
我假设您正在尝试向返回的Mongoose文档添加属性以在其他位置重用它.Mongoose返回的文档不是直接的JSON对象,您需要将它们转换为对象以向其添加属性.以下应该有效:
//... record is a mongoose Document
var r = record.toObject();
r.Name = 'test';
console.log("Record ",r);
Run Code Online (Sandbox Code Playgroud)
Hay*_*ire 11
那些发现这个问题的人,OP在原始问题下面的评论中提到这个问题的解决方案是:
records.set('Name', 'test')
Run Code Online (Sandbox Code Playgroud)
这会添加一个名为Namehaving value 的新属性test.
只是用,
var convertedJSON = JSON.parse(JSON.stringify(mongooseReturnedDocument);
Run Code Online (Sandbox Code Playgroud)
然后,
convertedJSON.newProperty = 'Hello!'
Run Code Online (Sandbox Code Playgroud)
'你好!' 可以是任何东西,数字,对象或JSON Object Literal.
干杯! :)
我遇到了类似的问题,希望我数小时的生存挫折能帮助处于同样情况的其他人。我倾向于相信通过 Mongoose 返回的文档是只读的。这实际上不是真的。
但是,您不能将不在您的架构中的属性分配给您的文档。
因此,除非您的架构具有以下内容:
{
Name: {String}
}
Run Code Online (Sandbox Code Playgroud)
尝试为您的文档指定 Name 时,您会经常感到沮丧。
现在,上面的答案中有一些解决方法也对我有用,但它们没有找到问题的根源:
myDocument.toObject();
JSON.parse(JSON.stringify(myDocument);
Run Code Online (Sandbox Code Playgroud)
这些会起作用,但在我看来,它们只是隐藏了问题。真正的问题是 Mongoose 比我们意识到的更聪明,并且正在执行您的架构,因为它应该。
| 归档时间: |
|
| 查看次数: |
45834 次 |
| 最近记录: |