Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 向mongodb添加带有预填充的字符串开头和结尾的文档_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript 向mongodb添加带有预填充的字符串开头和结尾的文档

Javascript 向mongodb添加带有预填充的字符串开头和结尾的文档,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我在NodeJS中有一个程序。我希望能够在dbs中插入一个字符串,但是我希望设置该字符串的预填充开始和结束。这个例子将帮助我更好地解释它: 我有一个模式: var Cat = new mongoose.Schema({ name: String, url: String }) 当我添加cat文档时,例如 var post = new Cat({name: "Emily", url: "test"}) 它将另存为“name=Emily,url=test” 挑战: 我想把它另存为这个'n

我在NodeJS中有一个程序。我希望能够在dbs中插入一个字符串,但是我希望设置该字符串的预填充开始和结束。这个例子将帮助我更好地解释它:

我有一个模式:

var Cat = new mongoose.Schema({
  name: String,
  url: String
})
当我添加cat文档时,例如

var post = new Cat({name: "Emily", url: "test"})
它将另存为“name=Emily,url=test”

挑战: 我想把它另存为这个
'name=Emily,url=http://test/extension“

因此,我想预先填充任何
url
,在开头添加
'http://'
,在结尾添加
'/extension'

我尝试过这样修改模式:

var Cat = new mongoose.Schema({
  name: String,
  url: 'http://' + String + '/nodes'
})
这给了我一个错误

TypeError: Undefined type `Http://function String() { [native code] }/extension` at `url`
我在项目中的不同位置添加了新文档,所以我只想找到一种从一个位置预填充的方法,而不是在整个项目中添加新文档时预填充它。
有人有其他想法吗?

这可能会解决您的问题:

var Cat = new Schema({
        name: String,
        url: String
    });

if (!Cat.options.toJSON)
    Cat.options.toJSON = {};

Cat.options.toJSON.transform = function (doc, ret, options) {
    ret.populatedUrl = 'http://' + ret.url + '/extension';

    // you can also delete url key if you want
    delete ret.url;
};
输出:

{name: 'name', populatedUrl: 'http://{url}/extension'}

这可能会解决您的问题:

var Cat = new Schema({
        name: String,
        url: String
    });

if (!Cat.options.toJSON)
    Cat.options.toJSON = {};

Cat.options.toJSON.transform = function (doc, ret, options) {
    ret.populatedUrl = 'http://' + ret.url + '/extension';

    // you can also delete url key if you want
    delete ret.url;
};
输出:

{name: 'name', populatedUrl: 'http://{url}/extension'}

如果调用像catInstance.toJSON({foo:true,bar:2})这样的对象,“options”参数将表示该参数。我担心这不起作用-我在问题中遇到了以下错误“无法读取未定义的属性”toJSON“如果调用像catInstance.toJSON这样的对象,{foo:true,bar:2}),“options”参数将表示该参数。我担心这不起作用-我得到以下错误“无法读取未定义”的属性“toJSON”,我在问题中遇到过